Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCedric Dumoulin2014-03-21 14:10:18 +0000
committerCedric Dumoulin2014-03-21 14:10:18 +0000
commit5c67c2e6418a8bd30784015f6f163a396b57d75d (patch)
tree39c4294d9e3e13c4f28ad511a72e38577349e176 /extraplugins
parent57b3ccb356e9593d8c5e1269aae998649370eab4 (diff)
parent36996a209a73bca6ec237c993c100928c46e28ac (diff)
downloadorg.eclipse.papyrus-5c67c2e6418a8bd30784015f6f163a396b57d75d.tar.gz
org.eclipse.papyrus-5c67c2e6418a8bd30784015f6f163a396b57d75d.tar.xz
org.eclipse.papyrus-5c67c2e6418a8bd30784015f6f163a396b57d75d.zip
Merge branch 'bugs/330199-layers'
Conflicts: plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/model/NotationModel.java Solved by adding the extra methods getByName() in the Master plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.hyperlink/META-INF/MANIFEST.MF Solved by getting the master copy plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF Solved by getting the master copy
Diffstat (limited to 'extraplugins')
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers-feature/.project17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers-feature/build.properties5
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers-feature/compile.org.eclipse.papyrus.layers_feature.xml9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers-feature/feature.xml83
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.classpath7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/META-INF/MANIFEST.MF11
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/about.html28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/build.properties5
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/plugin.properties12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/plugin.xml48
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/readme.txt12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/src/org/eclipse/papyrus/layers/dev/ui/Activator.java40
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/.gitignore1
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/.project22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/.settings/org.eclipse.core.resources.prefs7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/META-INF/MANIFEST.MF7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/about.html28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/build.properties17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layers-toc.xml7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs-toc.xml6
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs.html1
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs.mediawiki8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/index-toc.xml9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial-toc.xml12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial.html2
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial.mediawiki18
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/layers-toc.xml8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial-toc.xml18
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial.html4
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial.mediawiki136
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/OpenedLayersExplorer.pngbin0 -> 70385 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachLayersStack.pngbin0 -> 92611 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachPropertiesWindow.pngbin0 -> 12472 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewWindow.pngbin0 -> 15600 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewWindowSelectClasses.pngbin0 -> 21167 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewsToLayer.pngbin0 -> 91809 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachedLayersStack.pngbin0 -> 77251 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/changeFillColorValue.pngbin0 -> 83819 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/createLayer.pngbin0 -> 93012 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/createdLayer.pngbin0 -> 81947 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/defaulLayerProperties.pngbin0 -> 78532 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/diagramWith3Classes.pngbin0 -> 114938 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/disableLayer.pngbin0 -> 87227 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/layer2.pngbin0 -> 78244 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/openAttachPropertiesWindow.pngbin0 -> 92544 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/opnLayersExplorer.pngbin0 -> 95339 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/users/index-toc.xml7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.di128
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.notation6901
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.uml1244
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/plugin.properties12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.documentation/plugin.xml36
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.classpath7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.settings/org.eclipse.jdt.core.prefs11
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/META-INF/MANIFEST.MF17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/about.html28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/build.properties13
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.di63
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.notation147
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.uml7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/plugin.properties12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/test/org/eclipse/papyrus/layers/integrationtests/LayersStateAfterReloadTest.java275
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/.classpath7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/META-INF/MANIFEST.MF17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/about.html28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/build.properties16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.properties12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.xml5
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/Activator.java60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ConnectorItemProvider.java84
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/DiagramItemProvider.java81
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NotationItemProviderAdapterFactory.java65
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ShapeItemProvider.java84
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/.classpath8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/META-INF/MANIFEST.MF21
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/about.html28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/build.properties17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/plugin.properties12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/plugin.xml30
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/Activator.java40
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersModelEventListener.java65
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersStackApplicationEventListener.java39
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/INotationDiagramRemovedEventListener.java34
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizer.java397
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizer.java699
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifier.java444
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventUtils.java131
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifier.java302
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifier.java205
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramHelper.java206
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifier.java162
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/ILayersModelRootEventListener.java42
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModel.java128
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModelEventRootNotifier.java174
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/AbstractDerivedViewLayerNotifier.java133
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DiagramChangedEventNotifier.java65
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DomainChangedEventNotifier.java65
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/service/LayersApplicationService.java124
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/utils/package-info.java15
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/DiagramViewEventNotifierTest.java180
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerEventTest.java231
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerSubclass.java93
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerTest.java330
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerSubclass.java184
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerTest.java254
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerWithApplicationTest.java685
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifierTest.java589
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifierTest.java232
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifierTest.java183
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramMngrTest.java184
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifierTest.java187
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceDiagramViewEventListener.java42
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersModelEventListener.java153
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersStackApplicationEventListener.java50
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceNotationDiagramRemovedFromResourceEventListener.java35
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelRootEventNotifierTest.java187
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelTest.java112
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/TraceLayersModelRootEventListener.java40
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/ECoreUtilsTest.java100
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/NotationDiagramTestUtils.java37
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/TriggeredEventTraces.java132
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.classpath7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/META-INF/MANIFEST.MF23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/about.html28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/build.properties17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/icons/layerDiagram.gifbin0 -> 369 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.properties12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.xml98
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/Activator.java64
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/CreateLayersTreeDiagramHandler.java26
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/DynamicContextMenu.java481
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersDiagramActionBarContributor.java435
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeDiagramEditorFactory.java207
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeEditorDiagram.java240
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/AbstractLayerCommand.java234
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/DynamicCreateChildMenu.java51
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/ShowCreateChildCommand.java57
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/.classpath7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/META-INF/MANIFEST.MF22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/build.properties19
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateAbstractLayer_propertyValueMap_StringToTypeInstanceMap.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFillInstance_fillColor_ColorInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_BooleanType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Color.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_CustomType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Fill.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Folder.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_FontType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_IntType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LayersStackApplication.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LineType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Metamodel.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Property.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_StringType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_Folder.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_FolderElement.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_InstanciableElement.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorConfig.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorMultipleBinding.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorToOperatorBinding.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_OperatorConfig.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_PropertyId.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_TypeConfig.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_LayerDescriptor.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_RegExpLayerDescriptor.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_SimpleLayerDescriptor.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerNamedStyle_layersStack_LayersStack.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_AndStackedLayerOperatorDescriptor.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_LayerOperatorDescriptor.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_OrStackedLayerOperatorDescriptor.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_StackedLayerOperatorDescriptor.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_TopLayerOperatorDescriptor.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_CustomPropertyOperator.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_DefaultPropertyOperator.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_PropertyOperator.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_OperatorBinding.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_SimpleBinding.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_AllViewsDerivedLayer.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_CustomLayerOperator.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_Layer.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_RegExpLayer.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_StackedLayerOperator.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_TopLayerOperator.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValueMap_StringToTypeInstanceMap.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_BooleanInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_IntInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_StringInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_factory_LayerApplicationFactory.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerDescriptorRegistry_LayerDescriptorRegistry.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerOperatorDescriptorRegistry_LayerOperatorDescriptorRegistry.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerStackRegistry_LayerStackDescriptorRegistry.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layersStacks_LayersStack.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertyRegistry_PropertyRegistry.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertySetterRegistry_PropertySetterRegistry.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_AllViewsDerivedLayer.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_CustomLayerOperator.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_Layer.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_RegExpLayer.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_StackedLayerOperator.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_TopLayerOperator.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_properties_Property.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_typeRegistry_TypeRegistry.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FillPropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FontPropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsValidPropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsVisiblePropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_LinePropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_NullPropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_PropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_isAbstractUmlSetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_setterMap_StringToPropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_BooleanInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_ColorInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FillInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FontInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_IntInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_LineInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_NullInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_StringInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertyIndexMap_value_PropertyIndex.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FillPropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FontPropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsValidPropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsVisiblePropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_LinePropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_NullPropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_PropertySetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_isAbstractUmlSetter.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_BooleanInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_ColorInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FillInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FontInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_IntInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_LineInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_NullInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_StringInstance.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_BooleanType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Color.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_CustomType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Fill.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_FontType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_IntType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_LineType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_StringType.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateTypeRegistry_types_StringToTypeMap.gifbin0 -> 223 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AbstractLayerOperator.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AllViewsDerivedLayer.gifbin0 -> 874 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AndStackedLayerOperatorDescriptor.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanInstance.gifbin0 -> 923 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanType.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Color.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/ColorInstance.gifbin0 -> 923 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomLayerOperator.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomPropertyOperator.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomType.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/DefaultPropertyOperator.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Fill.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillInstance.gifbin0 -> 923 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillPropertySetter.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Folder.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FolderElement.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontInstance.gifbin0 -> 923 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontPropertySetter.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontType.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/InstanciableElement.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntInstance.gifbin0 -> 923 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntType.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsValidPropertySetter.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsVisiblePropertySetter.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Layer.gifbin0 -> 851 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerApplicationFactory.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptor.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptorRegistry.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerNamedStyle.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorConfig.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptor.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptorRegistry.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorMultipleBinding.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorToOperatorBinding.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerStackDescriptorRegistry.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStack.gifbin0 -> 911 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStackApplication.gifbin0 -> 927 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineInstance.gifbin0 -> 923 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LinePropertySetter.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineType.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Metamodel.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullInstance.gifbin0 -> 923 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullPropertySetter.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorBinding.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorConfig.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OrStackedLayerOperatorDescriptor.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Property.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyId.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyIndex.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyOperator.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyRegistry.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetter.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetterRegistry.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayer.gifbin0 -> 874 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayerDescriptor.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleBinding.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleLayerDescriptor.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperator.gifbin0 -> 865 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperatorDescriptor.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringInstance.gifbin0 -> 923 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertyIndexMap.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertySetter.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeInstanceMap.gifbin0 -> 884 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeMap.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringType.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperator.gifbin0 -> 871 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperatorDescriptor.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeConfig.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeRegistry.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/isAbstractUmlSetter.gifbin0 -> 129 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.properties236
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.xml35
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderElementItemProvider.java167
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderItemProvider.java191
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/InstanciableElementItemProvider.java249
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorConfigItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorMultipleBindingItemProvider.java190
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigEditPlugin.java99
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigItemProviderAdapterFactory.java353
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorBindingItemProvider.java201
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorConfigItemProvider.java117
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/PropertyIdItemProvider.java145
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/TypeConfigItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerItemProvider.java248
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerOperatorItemProvider.java176
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AllViewsDerivedLayerItemProvider.java110
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AndStackedLayerOperatorDescriptorItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ApplicationDependantElementItemProvider.java144
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanInstanceItemProvider.java151
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanTypeItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorInstanceItemProvider.java151
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomLayerOperatorItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomPropertyOperatorItemProvider.java200
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomTypeItemProvider.java153
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/DefaultPropertyOperatorItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillInstanceItemProvider.java192
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillPropertySetterItemProvider.java119
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderElementItemProvider.java118
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderItemProvider.java249
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontInstanceItemProvider.java225
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontPropertySetterItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontTypeItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntInstanceItemProvider.java151
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntTypeItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsAbstractUmlSetterItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsValidPropertySetterItemProvider.java119
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsVisiblePropertySetterItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerApplicationFactoryItemProvider.java129
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorItemProvider.java154
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorRegistryItemProvider.java187
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerExpressionItemProvider.java283
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerItemProvider.java118
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerNamedStyleItemProvider.java182
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorItemProvider.java190
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorRegistryItemProvider.java266
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorItemProvider.java180
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerStackDescriptorRegistryItemProvider.java129
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersEditPlugin.java105
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersItemProviderAdapterFactory.java1577
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackApplicationItemProvider.java205
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackItemProvider.java308
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineInstanceItemProvider.java175
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LinePropertySetterItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineTypeItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/MetamodelItemProvider.java273
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullInstanceItemProvider.java115
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullPropertySetterItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/OrStackedLayerOperatorDescriptorItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyIndexItemProvider.java188
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyItemProvider.java300
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyOperatorItemProvider.java167
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyRegistryItemProvider.java208
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterItemProvider.java190
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterRegistryItemProvider.java214
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerDescriptorItemProvider.java115
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerItemProvider.java297
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/SimpleLayerDescriptorItemProvider.java115
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorDescriptorItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorItemProvider.java135
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringInstanceItemProvider.java153
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertyIndexMapItemProvider.java206
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertySetterItemProvider.java236
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeInstanceMapItemProvider.java240
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeMapItemProvider.java241
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringTypeItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorDescriptorItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorItemProvider.java120
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeInstanceItemProvider.java118
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeItemProvider.java189
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeRegistryItemProvider.java177
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/CustomLayersItemProviderAdapterFactory.java47
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayersStackApplicationItemProvider.java46
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/.classpath7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/META-INF/MANIFEST.MF21
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/build.properties19
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersModelFile.gifbin0 -> 346 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersconfigModelFile.gifbin0 -> 346 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayers.gifbin0 -> 2462 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayersconfig.gifbin0 -> 2462 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.properties60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.xml49
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigActionBarContributor.java433
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditor.java1828
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditorPlugin.java101
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigModelWizard.java637
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersActionBarContributor.java433
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditor.java1837
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditorPlugin.java107
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersModelWizard.java637
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/.classpath7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/META-INF/MANIFEST.MF17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/build.properties16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/plugin.properties4
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerOperatorTest.java69
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerTest.java116
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AllViewsDerivedLayerTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AndStackedLayerOperatorDescriptorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ApplicationDependantElementTest.java55
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanInstanceTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanTypeTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorInstanceTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ComputePropertyValueCommandItfTest.java74
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomLayerOperatorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomPropertyOperatorTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomTypeTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/DefaultPropertyOperatorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillInstanceTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillPropertySetterTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderElementTest.java55
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontInstanceTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontPropertySetterTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontTypeTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntInstanceTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntTypeTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsAbstractUmlSetterTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsValidPropertySetterTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsVisiblePropertySetterTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerApplicationFactoryTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorRegistryTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerExpressionTest.java186
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerNamedStyleTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorRegistryTest.java178
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorTest.java150
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorTest.java55
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerStackDescriptorRegistryTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersAllTests.java47
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersContainerTest.java74
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersExample.java121
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackApplicationTest.java145
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackTest.java234
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersTests.java90
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineInstanceTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LinePropertySetterTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineTypeTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/MetamodelTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullInstanceTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullPropertySetterTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/OrStackedLayerOperatorDescriptorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyIndexTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyOperatorTest.java108
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyRegistryTest.java155
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterRegistryTest.java136
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterTest.java74
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerDescriptorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerTest.java173
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/SimpleLayerDescriptorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorDescriptorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringInstanceTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertyIndexMapTest.java93
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertySetterTest.java93
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeInstanceMapTest.java93
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeMapTest.java93
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringTypeTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorDescriptorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeInstanceTest.java102
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeRegistryTest.java89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeTest.java55
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/.classpath8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/META-INF/MANIFEST.MF28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/about.html28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/build.properties23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.di89
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.ecore578
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.genmodel462
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.notation6105
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.uml1554
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.di35
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.ecore66
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.genmodel83
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.notation856
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.uml168
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/ecore.uml1126
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.di17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.ecore444
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.notation179
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.uml1291
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/plugin.properties12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/plugin.xml25
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/ClassnameKind.java272
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/Folder.java50
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/FolderElement.java60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/InstanciableElement.java172
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorConfig.java38
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorMultipleBinding.java79
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorToOperatorBinding.java86
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersOperatorBinding.java28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigFactory.java106
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigPackage.java1285
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorBinding.java132
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorConfig.java38
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/PropertyId.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/SimpleBinding.java88
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/TypeConfig.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderElementImpl.java173
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderImpl.java160
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/InstanciableElementImpl.java386
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImpl.java99
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorMultipleBindingImpl.java233
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigFactoryImpl.java313
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigPackageImpl.java639
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorBindingImpl.java355
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImpl.java209
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/PropertyIdImpl.java164
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/TypeConfigImpl.java49
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigAdapterFactory.java274
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigSwitch.java297
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/BadStateException.java64
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/InstanciationException.java64
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/LayersException.java77
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/NotFoundException.java64
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactory.java115
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/command/ComputePropertyValueCommand.java37
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java410
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/IValueChangedEventListener.java35
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifier.java326
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactory.java68
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayer.java164
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayerOperator.java102
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AllViewsDerivedLayer.java17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AndStackedLayerOperatorDescriptor.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ApplicationDependantElement.java60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanInstance.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanPropertyValue.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanType.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanValue.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Color.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ColorInstance.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomLayerOperator.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomPropertyOperator.java124
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomType.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/DefaultPropertyOperator.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/EventLevel.java208
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Fill.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillInstance.java86
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillPropertySetter.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Folder.java77
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FolderElement.java28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontInstance.java144
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontPropertySetter.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontType.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntInstance.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntPropertyValue.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntType.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntValue.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsAbstractUmlSetter.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsValidPropertySetter.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsVisiblePropertySetter.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Layer.java28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerApplicationFactory.java62
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptor.java60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptorRegistry.java51
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerExpression.java350
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerNamedStyle.java51
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperator.java51
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptor.java112
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptorRegistry.java162
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerStackDescriptorRegistry.java28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerState.java208
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersContainer.java31
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactory.java529
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactoryForStack.java109
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersPackage.java10986
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStack.java296
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStackApplication.java258
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineInstance.java86
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LinePropertySetter.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineType.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Metamodel.java203
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullInstance.java36
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullPropertySetter.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/OrStackedLayerOperatorDescriptor.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Package.java50
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PackageableElement.java28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Property.java178
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyDescriptor.java28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyIndex.java87
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyOperator.java74
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyRegistry.java119
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetter.java100
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetterRegistry.java124
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyValue.java28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayer.java287
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayerDescriptor.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/SimpleLayerDescriptor.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperator.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperatorDescriptor.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringInstance.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringPropertyValue.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringToTypeInstanceMap.java87
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringType.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringValue.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperator.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperatorDescriptor.java27
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Type.java121
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeInstance.java45
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeRegistry.java52
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImpl.java796
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImpl.java475
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AllViewsDerivedLayerImpl.java66
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AndStackedLayerOperatorDescriptorImpl.java49
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ApplicationDependantElementImpl.java167
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanInstanceImpl.java200
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImpl.java60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorImpl.java60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorInstanceImpl.java204
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomLayerOperatorImpl.java49
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImpl.java384
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomTypeImpl.java172
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/DefaultPropertyOperatorImpl.java48
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillImpl.java65
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillInstanceImpl.java291
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillPropertySetterImpl.java74
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderElementImpl.java51
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderImpl.java224
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImpl.java378
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontPropertySetterImpl.java78
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontTypeImpl.java62
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntInstanceImpl.java205
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImpl.java60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsAbstractUmlSetterImpl.java76
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsValidPropertySetterImpl.java63
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsVisiblePropertySetterImpl.java74
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerApplicationFactoryImpl.java206
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorImpl.java166
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorRegistryImpl.java156
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionImpl.java786
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImpl.java49
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerNamedStyleImpl.java156
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImpl.java310
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImpl.java465
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorImpl.java311
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerStackDescriptorRegistryImpl.java51
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImpl.java205
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryImpl.java1035
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersPackageImpl.java3833
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImpl.java744
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java739
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineInstanceImpl.java263
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LinePropertySetterImpl.java80
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineTypeImpl.java63
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/MetamodelImpl.java473
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullInstanceImpl.java76
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullPropertySetterImpl.java50
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/OrStackedLayerOperatorDescriptorImpl.java50
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyImpl.java465
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyIndexImpl.java235
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyOperatorImpl.java212
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImpl.java387
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterImpl.java267
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImpl.java384
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerDescriptorImpl.java49
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java1037
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/SimpleLayerDescriptorImpl.java49
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImpl.java83
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImpl.java151
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringInstanceImpl.java200
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertyIndexMapImpl.java335
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertySetterImpl.java335
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeInstanceMapImpl.java331
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeMapImpl.java335
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImpl.java60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImpl.java83
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImpl.java171
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeImpl.java319
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeInstanceImpl.java112
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImpl.java187
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/ILayerOperatorDescriptorRegistryLoader.java33
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoader.java118
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModel.java252
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelUtils.java111
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoader.java97
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/ECoreUtils.java79
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersAdapterFactory.java1395
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersSwitch.java1674
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedList.java376
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyUtils.java57
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifier.java200
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactory.java68
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewEventNotifier.java202
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IDiagramViewEventListener.java42
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/ILayersTreeEventListener.java66
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IUmlNamedElementChangedEventListener.java34
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifier.java198
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactory.java68
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifier.java176
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactory.java68
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/package-info.java17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperator.java91
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperator.java91
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/CustomPropertyOperatorsInstance.java32
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/FillAverageOperator.java99
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/Collections3.java75
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizer.java121
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/LayerDiagramViewPredicate.java64
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java352
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/models/model1.notation5508
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImplTest.java74
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImplTest.java121
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/ManageExtPropertyTest.java50
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactoryTest.java149
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java451
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/TraceValueChangedEventListener.java40
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactoryTest.java95
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierTest.java222
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/integration/LayersStateAfterReloadTest.java388
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImplWithApplicationTest.java102
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImplTest.java94
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImplTest.java91
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImplTest.java149
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FakeOperator.java73
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImplTest.java85
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImplTest.java95
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java220
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplGetComputeCommandTest.java242
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplTest.java166
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplWithApplicationTest.java255
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImplTest.java175
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImplTest.java273
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImplWithApplicationTest.java384
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImplTest.java218
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImplTest.java182
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImplTest.java134
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImplWithQueriesTest.java177
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImplTest.java82
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java397
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplWithAplicationTest.java85
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImplTest.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImplTest.java83
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImplGetComputeCommandTest.java316
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImplTest.java76
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoaderTest.java103
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelTest.java114
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoaderTest.java247
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayerFactoryTestUtilsTest.java98
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryForStackTestUtils.java173
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryTestUtils.java136
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedListTest.java131
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactoryTest.java93
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierTest.java149
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactoryTest.java90
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierTest.java356
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceDiagramViewChangedEventListener.java59
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceLayersModelEventListener.java69
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceUmlNamedElementChangedEventListener.java40
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactoryTest.java95
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierTest.java201
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperatorTest.java107
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperatorTest.java107
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/FakePropertyOperator.java40
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizerTest.java173
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java41
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactory.java135
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactoryTest.java137
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java447
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/TriggeredEventTraces.java131
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/.classpath7
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/.project28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/META-INF/MANIFEST.MF42
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/about.html28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/build.properties22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/LayersStackApplication.gifbin0 -> 927 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/icon_delete.pngbin0 -> 480 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/layers.gifbin0 -> 983 bytes
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/plugin.properties12
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/plugin.xml336
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-orig.ctx1306
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-v1.ctx1306
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-v2.ctx1540
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties.ctx1517
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayer.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayerOperator.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAndStackedLayerOperatorDescriptor.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleApplicationDependantElement.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanInstance.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanType.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColor.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColorInstance.xwt17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleComputePropertyValueCommandItf.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomLayerOperator.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomPropertyOperator.xwt20
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomType.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleDefaultPropertyOperator.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFill.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillInstance.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillPropertySetter.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolder.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolderElement.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontInstance.xwt33
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontPropertySetter.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontType.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntInstance.xwt15
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntType.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsAbstractUmlSetter.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsValidPropertySetter.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsVisiblePropertySetter.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayer.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerApplicationFactory.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptor.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptorRegistry.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerExpression.xwt17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerNamedStyle.xwt8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperator.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptor.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptorRegistry.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerStackDescriptorRegistry.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStack.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStackApplication.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineInstance.xwt19
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLinePropertySetter.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineType.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleMetamodel.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullInstance.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullPropertySetter.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleOrStackedLayerOperatorDescriptor.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleProperty.xwt15
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyIndex.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyOperator.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyRegistry.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetter.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetterRegistry.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayer.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayerDescriptor.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleSimpleLayerDescriptor.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperator.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperatorDescriptor.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringInstance.xwt15
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertyIndexMap.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertySetter.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeInstanceMap.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeMap.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringType.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperator.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperatorDescriptor.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleType.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeInstance.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeRegistry.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayer.xwt42
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayerOperator.xwt35
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAndStackedLayerOperatorDescriptor.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleApplicationDependantElement.xwt15
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanInstance.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanType.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColor.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColorInstance.xwt17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleComputePropertyValueCommandItf.xwt8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomLayerOperator.xwt31
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomPropertyOperator.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomType.xwt24
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleDefaultPropertyOperator.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFill.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillInstance.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillPropertySetter.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolder.xwt15
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolderElement.xwt8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontInstance.xwt32
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontPropertySetter.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontType.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntInstance.xwt15
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntType.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsAbstractUmlSetter.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsValidPropertySetter.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsVisiblePropertySetter.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayer.xwt43
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerApplicationFactory.xwt8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptor.xwt17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptorRegistry.xwt8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerExpression.xwt32
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerNamedStyle.xwt8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperator.xwt31
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptor.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptorRegistry.xwt26
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerStackDescriptorRegistry.xwt8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStack.xwt24
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStackApplication.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineInstance.xwt19
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLinePropertySetter.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineType.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleMetamodel.xwt28
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullInstance.xwt9
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullPropertySetter.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleOrStackedLayerOperatorDescriptor.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleProperty.xwt30
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyIndex.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyOperator.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyRegistry.xwt30
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetter.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetterRegistry.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayer.xwt57
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayerDescriptor.xwt17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleSimpleLayerDescriptor.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperator.xwt37
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperatorDescriptor.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringInstance.xwt15
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertyIndexMap.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertySetter.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeInstanceMap.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeMap.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringType.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperator.xwt37
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperatorDescriptor.xwt23
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleType.xwt22
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeInstance.xwt8
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeRegistry.xwt16
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers/ui/Activator.java60
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractCreateLayerExpressionHandler.java115
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayerStackCommand.java235
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayersCommand.java356
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachDiagramViewsToLayer.java194
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachLayerStackCommand.java62
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyFromListToLayer.java195
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyToLayer.java111
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerHandler.java49
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerOperatorsFromParameter.java159
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateRegExpLayerHandler.java51
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateStackedLayerOperatorHandler.java40
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateTopLayerOperatorHandler.java49
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DeleteItemHandler.java118
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DetachLayerStackCommand.java61
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/LayerOperatorsParameterValues.java50
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/package-info.java15
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayerExplorerPageBookView.java97
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerPage.java77
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerView.java37
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/AttachDiagramSelectedItemsToCurrentLayer.java177
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/CreateAllViewsDerivedLayerHandler.java50
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/OpenLayerExplorerHandler.java74
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/RemoveDiagramSelectedItemsFromCurrentLayer.java179
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/utils/HandlersUtils.java70
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerView.java692
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerViewUtils.java130
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersTreeViewerFactory.java114
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/package-info.java18
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/wb/swt/SWTResourceManager.java447
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.updatesite/.project17
-rw-r--r--extraplugins/layers/org.eclipse.papyrus.layers.updatesite/site.xml4
980 files changed, 139400 insertions, 0 deletions
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers-feature/.project b/extraplugins/layers/org.eclipse.papyrus.layers-feature/.project
new file mode 100644
index 00000000000..6bcf81fd72b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers-feature/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers-feature/build.properties
new file mode 100644
index 00000000000..e2cde132f58
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers-feature/build.properties
@@ -0,0 +1,5 @@
+bin.includes = feature.xml
+src.includes = .project,\
+ build.properties,\
+ compile.org.eclipse.papyrus.layers_feature.xml,\
+ feature.xml
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers-feature/compile.org.eclipse.papyrus.layers_feature.xml b/extraplugins/layers/org.eclipse.papyrus.layers-feature/compile.org.eclipse.papyrus.layers_feature.xml
new file mode 100644
index 00000000000..9e6c01f6fa5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers-feature/compile.org.eclipse.papyrus.layers_feature.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="Compile org.eclipse.papyrus.layers_feature" default="main">
+ <target name="main">
+ <ant antfile="build.xml" dir="../org.eclipse.papyrus.layers.metamodel" target="build.jars"/>
+ <ant antfile="build.xml" dir="../org.eclipse.papyrus.layers.metamodel.edit" target="build.jars"/>
+ <ant antfile="build.xml" dir="../org.eclipse.papyrus.layers.metamodel.editor" target="build.jars"/>
+ <ant antfile="build.xml" dir="../org.eclipse.papyrus.layers.ui" target="build.jars"/>
+ </target>
+</project>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers-feature/feature.xml b/extraplugins/layers/org.eclipse.papyrus.layers-feature/feature.xml
new file mode 100644
index 00000000000..d761fbc96d2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers-feature/feature.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.papyrus.layers_feature"
+ label="Layers_feature"
+ version="1.0.0.qualifier">
+
+ <description url="http://www.example.com/description">
+ Papyrus Layers
+ </description>
+
+ <copyright url="http://www.example.com/copyright">
+ [Enter Copyright Description here.]
+ </copyright>
+
+ <license url="http://www.example.com/license">
+ [Enter License Description here.]
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.emf.ecore"/>
+ <import plugin="org.eclipse.gmf.runtime.notation"/>
+ <import plugin="org.eclipse.emf.edit"/>
+ <import plugin="org.eclipse.emf.ecore.edit"/>
+ <import plugin="org.eclipse.gmf.runtime.notation.edit"/>
+ <import plugin="org.eclipse.uml2.common.edit"/>
+ <import plugin="org.eclipse.core.resources"/>
+ <import plugin="org.eclipse.emf.ecore.xmi"/>
+ <import plugin="org.eclipse.emf.edit.ui"/>
+ <import plugin="org.eclipse.ui.ide"/>
+ <import plugin="org.eclipse.ui"/>
+ <import plugin="org.eclipse.papyrus.sasheditor" version="0.7.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui.forms" version="3.4.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.gmf.runtime.diagram.ui" version="1.2.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.emf" version="2.5.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.papyrus.core" version="0.7.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.papyrus.layers.metamodel" version="0.7.0" match="greaterOrEqual"/>
+ <import plugin="org.junit4"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.papyrus.layers.metamodel"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.layers.metamodel.edit"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.layers.metamodel.editor"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.layers.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.layers.metamodel.tests"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.layers.application"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.classpath
new file mode 100644
index 00000000000..ad32c83a788
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.project b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.project
new file mode 100644
index 00000000000..6ea6b87750f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.dev.ui</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/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.settings/org.eclipse.jdt.core.prefs b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..c537b63063c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..d9375e801d8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.dev.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.layers.dev.ui.Activator
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/about.html b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/about.html
new file mode 100644
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/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/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/build.properties
new file mode 100644
index 00000000000..e9863e281ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/plugin.properties
new file mode 100644
index 00000000000..1ba9a8575ad
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2013 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:
+# Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers UI for Dev (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/plugin.xml b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/plugin.xml
new file mode 100644
index 00000000000..f90e51be5b9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/plugin.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.layers.stackmodel.ui.popupmenu?after=endseparator">
+ <separator
+ name="devseparator"
+ visible="true">
+ </separator>
+ <menu
+ label="Oldies">
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachLayerStack"
+ label="Attach Layer Stack"
+ style="push"
+ tooltip="Attach a Layer Stack to the diagram">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createtoplayeroperator"
+ label="Create Top Layer Operator"
+ style="push"
+ tooltip="Create a top Layer operator">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createstackedLayerOperator"
+ label="Create Stacked Layer Operator"
+ style="push"
+ tooltip="Create a Stacked Layer operator">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachPropertyToLayer"
+ label="Attach a Property to a Layer"
+ style="push"
+ tooltip="Attach a Property to a Layer">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+ label="Create Layer Operators No Param"
+ style="push">
+ </command>
+ </menu>
+ </menuContribution>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/readme.txt b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/readme.txt
new file mode 100644
index 00000000000..d5d416addd9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/readme.txt
@@ -0,0 +1,12 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2014 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Cedric Dumoulin - cedric.dumoulin@lifl.fr
+#-------------------------------------------------------------------------------
+This plugins contains code for developpers.
+This plugins is not intended to be part of the layers distribution.
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/src/org/eclipse/papyrus/layers/dev/ui/Activator.java b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/src/org/eclipse/papyrus/layers/dev/ui/Activator.java
new file mode 100644
index 00000000000..94137e7ab64
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.dev.ui/src/org/eclipse/papyrus/layers/dev/ui/Activator.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.dev.ui;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ private static BundleContext context;
+
+ static BundleContext getContext() {
+ return context;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.context = bundleContext;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext bundleContext) throws Exception {
+ Activator.context = null;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/.gitignore b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/.gitignore
new file mode 100644
index 00000000000..2f88269126d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/.gitignore
@@ -0,0 +1 @@
+/docs
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/.project b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/.project
new file mode 100644
index 00000000000..99176fc7af7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.documentation</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <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>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/.settings/org.eclipse.core.resources.prefs b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..47ba1efd3d1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+encoding//guides/developpers/layersDevs-toc.xml=utf-8
+encoding//guides/developpers/layersDevs.html=utf-8
+encoding//guides/tutorials/derivedLayerTutorial-toc.xml=utf-8
+encoding//guides/tutorials/derivedLayerTutorial.html=utf-8
+encoding//guides/tutorials/simpleTutorial-toc.xml=utf-8
+encoding//guides/tutorials/simpleTutorial.html=utf-8
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..73a0509f63f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.documentation;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.help
+Bundle-Vendor: %providerName
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/about.html b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/about.html
new file mode 100644
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/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/extraplugins/layers/org.eclipse.papyrus.layers.documentation/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/build.properties
new file mode 100644
index 00000000000..415384e8a25
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/build.properties
@@ -0,0 +1,17 @@
+bin.includes = META-INF/,\
+ guides/,\
+ models/,\
+ build.properties,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ .settings/
+src.includes = guides/,\
+ models/,\
+ build.properties,\
+ META-INF/,\
+ .project,\
+ .settings/,\
+ plugin.properties,\
+ plugin.xml,\
+ about.html
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layers-toc.xml b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layers-toc.xml
new file mode 100644
index 00000000000..b54cf6ff390
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layers-toc.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc label="Papyrus Layers" link_to="../org.eclipse.papyrus.infra.doc/toc.xml#PapyrusDocDev">
+ <topic href="guides/developpers/layersDevs.html" label="Layers Developers Documentation">
+ <link toc="guides/developpers/layersDevs-toc.xml"/>
+ <anchor id="layers.guides.devs"/>
+ </topic>
+</toc>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs-toc.xml b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs-toc.xml
new file mode 100644
index 00000000000..0d173331c62
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs-toc.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc topic="guides/developpers/layersDevs.html" label="layersDevs">
+ <topic href="guides/developpers/layersDevs.html" label="Layers Developpers"></topic>
+ <topic href="guides/developpers/layersDevs.html#General_Architecture" label="General Architecture"></topic>
+ <topic href="guides/developpers/layersDevs.html#Plugins" label="Plugins"></topic>
+</toc> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs.html b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs.html
new file mode 100644
index 00000000000..98dd7080b47
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs.html
@@ -0,0 +1 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head><body><h2 id="Layers_Developpers">Layers Developpers</h2><p>This is the documentation for layers developpers</p><h2 id="General_Architecture">General Architecture</h2><h2 id="Plugins">Plugins</h2></body></html> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs.mediawiki b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs.mediawiki
new file mode 100644
index 00000000000..d9a33a73e11
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/developpers/layersDevs.mediawiki
@@ -0,0 +1,8 @@
+== Layers Developpers ==
+This is the documentation for layers developpers
+
+
+== General Architecture ==
+
+== Plugins ==
+
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/index-toc.xml b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/index-toc.xml
new file mode 100644
index 00000000000..da056b58757
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/index-toc.xml
@@ -0,0 +1,9 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc label="Layers" link_to="../org.eclipse.papyrus.infra.doc/toc.xml#PapyrusDocUser">
+ <topic label="Layers" >
+ <link toc="guides/tutorials/layers-toc.xml"/>
+ <anchor id="tutorials"/>
+ <link toc="guides/users/index-toc.xml"/>
+ <anchor id="documentation"/>
+ </topic>
+</toc>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial-toc.xml b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial-toc.xml
new file mode 100644
index 00000000000..42a0f7e2d56
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial-toc.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc topic="guides/tutorials/derivedLayerTutorial.html" label="derivedLayerTutorial">
+ <topic href="guides/tutorials/derivedLayerTutorial.html" label="Using Derived Layer (OCL Expression)">
+ <topic href="guides/tutorials/derivedLayerTutorial.html#Creating_a_derived_Layer" label="Creating a derived Layer"></topic>
+ <topic href="guides/tutorials/derivedLayerTutorial.html#Writing_an_expression" label="Writing an expression"></topic>
+ <topic href="guides/tutorials/derivedLayerTutorial.html#Expressions_Examples" label="Expressions Examples">
+ <topic href="guides/tutorials/derivedLayerTutorial.html#All_views_starting_with_a_particular_string" label="All views starting with a particular string"></topic>
+ <topic href="guides/tutorials/derivedLayerTutorial.html#All_classes_that_are_abstract" label="All classes that are abstract"></topic>
+ <topic href="guides/tutorials/derivedLayerTutorial.html#All_classes_containing_an_operation_named_.27abc.27" label="All classes containing an operation named 'abc'"></topic>
+ </topic>
+ </topic>
+</toc> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial.html b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial.html
new file mode 100644
index 00000000000..cfbff6f7400
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial.html
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head><body><h1 id="Using_Derived_Layer_.28OCL_Expression.29">Using Derived Layer (OCL Expression)</h1><p>This tutorial show how to use a Derived Layer.</p><p>A derived layer is a leaf Layer where the views are automatically attached to
+the layer, according to an expression. Actuallty, the expression is expressed in OCL.</p><h2 id="Creating_a_derived_Layer">Creating a derived Layer</h2><h2 id="Writing_an_expression">Writing an expression</h2><h2 id="Expressions_Examples">Expressions Examples</h2><h3 id="All_views_starting_with_a_particular_string">All views starting with a particular string</h3><h3 id="All_classes_that_are_abstract">All classes that are abstract</h3><h3 id="All_classes_containing_an_operation_named_.27abc.27">All classes containing an operation named 'abc'</h3></body></html> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial.mediawiki b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial.mediawiki
new file mode 100644
index 00000000000..0a111453132
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/derivedLayerTutorial.mediawiki
@@ -0,0 +1,18 @@
+= Using Derived Layer (OCL Expression) =
+
+This tutorial show how to use a Derived Layer.
+
+A derived layer is a leaf Layer where the views are automatically attached to
+the layer, according to an expression. Actuallty, the expression is expressed in OCL.
+
+== Creating a derived Layer ==
+
+== Writing an expression ==
+
+== Expressions Examples ==
+
+=== All views starting with a particular string ===
+
+=== All classes that are abstract ===
+
+=== All classes containing an operation named 'abc' === \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/layers-toc.xml b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/layers-toc.xml
new file mode 100644
index 00000000000..7baf497198d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/layers-toc.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc label="Layers Tutorials" >
+ <topic label="Layers Tutorials">
+ <link toc="guides/tutorials/simpleTutorial-toc.xml"/>
+ <link toc="guides/tutorials/derivedLayerTutorial-toc.xml"/>
+ <anchor id="layers.guides.tutorials"/>
+ </topic>
+</toc>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial-toc.xml b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial-toc.xml
new file mode 100644
index 00000000000..cc37f9ba974
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial-toc.xml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc topic="guides/tutorials/simpleTutorial.html" label="simpleTutorial">
+ <topic href="guides/tutorials/simpleTutorial.html" label="A simple Example and Tutorial">
+ <topic href="guides/tutorials/simpleTutorial.html#Create_a_new_Class_Diagram" label="Create a new Class Diagram"></topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Open_the_LayersExplorer" label="Open the LayersExplorer"></topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Attach_a_LayersStack_to_your_diagram" label="Attach a LayersStack to your diagram"></topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Create_a_new_Layer_in_the_LayersStack" label="Create a new Layer in the LayersStack"></topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Attach_Classes_to_the_Layer" label="Attach Classes to the Layer"></topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Attach_some_properties_to_the_layer" label="Attach some properties to the layer"></topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Add_more_layers" label="Add more layers"></topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Change_the_value_of_an_attached_property" label="Change the value of an attached property"></topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Add_the_3rd_layer" label="Add the 3rd layer"></topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Disabling_a_Layer" label="Disabling a Layer"></topic>
+ </topic>
+ <topic href="guides/tutorials/simpleTutorial.html#Layer_Operators" label="Layer Operators">
+ <topic href="guides/tutorials/simpleTutorial.html#Top_Layer_Operator" label="Top Layer Operator"></topic>
+ </topic>
+</toc> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial.html b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial.html
new file mode 100644
index 00000000000..16a657ecba0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial.html
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head><body><h1 id="A_simple_Example_and_Tutorial">A simple Example and Tutorial</h1><p>In this example, we create a class diagram with 3 classes (class1, class2, class3), and a LayersStack with 3 layers (layer2, layer1, bottom). The bottom layer control the 3 classes and all the available properties. The layer1 control Class1 and Class2. The layer2 control Class2 and Class3.</p><p>This example is also a tutorial, if you follow it step by step.</p><h2 id="Create_a_new_Class_Diagram">Create a new Class Diagram</h2><p>Start by creating a Papyrus Class Diagram with 3 classes:</p><ul><li>Create a new ClassDiagram in a Papyrus model</li><li>Create three classes: Class1, Class2, Class3</li><li>Open the Papyrus ModelExplorer and the Property View.</li></ul><p>You should have a diagram and model explorer like in the following figure:</p><p><img border="0" src="simpleTutorialImages/diagramWith3Classes.png"/></p><h2 id="Open_the_LayersExplorer">Open the LayersExplorer</h2><p>To open the LayersExplorer:</p><ul><li>In the diagram, Right Click-&gt;Layers-&gt;Open LayersExplorer</li></ul><p><img border="0" src="simpleTutorialImages/opnLayersExplorer.png"/></p><ul><li>The explorer should open (not necessarly at the same position as in the following snapshoot):</li></ul><p><img border="0" src="simpleTutorialImages/OpenedLayersExplorer.png"/></p><h2 id="Attach_a_LayersStack_to_your_diagram">Attach a LayersStack to your diagram</h2><p>To attach a LayersStack to your diagram:</p><ul><li>Click in the diagram, then Right Click-&gt;Layers-&gt;Attach Layer Stack</li></ul><p><img border="0" src="simpleTutorialImages/attachLayersStack.png"/></p><ul><li>The LayersExplorer should show the layers attached to the LayersStack. By default, there is a 'Layer Operator' of type 'Top Layer'. The 'Top Layer Operator' contains layers that are ordered from top to bottom. When computing the value for a particular (view, property type) couple, it search the first layer that define a value for the couple, and return this value.</li></ul><p><img border="0" src="simpleTutorialImages/attachedLayersStack.png"/></p><h2 id="Create_a_new_Layer_in_the_LayersStack">Create a new Layer in the LayersStack</h2><p>We need now to create a layer in the stack.</p><p>To create a new Layer in the LayersStack:</p><ul><li>In the LayerExplorer, select the Top Layer Operator</li><li>right click-&gt;Layers-&gt;Create Layers ...-&gt;Create Layer</li></ul><p><img border="0" src="simpleTutorialImages/createLayer.png"/></p><ul><li>A new layer is created:<ul><li>Open the tree node to see the layer (1)</li><li>Select the layers tab in the Property view (2)</li><li>Change the name of the layer to 'bottomLayer' (3)</li></ul></li></ul><p><img border="0" src="simpleTutorialImages/createdLayer.png"/></p><h2 id="Attach_Classes_to_the_Layer">Attach Classes to the Layer</h2><p>Attaching some classes (also called views) to a layer means that this layer will partially control the value of some properties for this attached classes.
+Here, we attach the 3 classes.
+To Attach the classes to the Layer:</p><ul><li>Select the layer 'bottomLayer', right click-&gt;Layers-&gt;Attach Views</li></ul><p><img border="0" src="simpleTutorialImages/attachViewsToLayer.png"/> </p><ul><li>A window open, select the 3 classes (1) and click 'ok (2)'.:</li></ul><p><img border="0" src="simpleTutorialImages/attachViewWindowSelectClasses.png"/></p><h2 id="Attach_some_properties_to_the_layer">Attach some properties to the layer</h2><p>A layer is used to control some properties of the attached views. It is necessary to attach the properties
+controled by the layer. Once attached, it is possible to modify the values of this properties.</p><p>To attach some properties to the layer:</p><ul><li>In the LayersExplorer, select the defaul layer, right click-&gt;Layers-&gt;Attach Properties</li></ul><p><img border="0" src="simpleTutorialImages/openAttachPropertiesWindow.png"/></p><ul><li>The Attach Properties window open. Select properties as in the screenshot, and then 'ok'.</li></ul><p><img border="0" src="simpleTutorialImages/attachPropertiesWindow.png"/></p><ul><li>The properties and the views are now attached to the layers. Properties for these views are computed according to the layer, and as a resul the fill color change. This is because the default value for 'fill color' of the layer property is different from the Papyrus value.<ul><li>You can open the property node in the LayersExplorer, select a property, and change its value in the Property view.</li></ul></li></ul><p><img border="0" src="simpleTutorialImages/defaulLayerProperties.png"/></p><h2 id="Add_more_layers">Add more layers</h2><p>Now, add a new Layer in the Top Layer Operator:</p><ul><li>Select the Top Layer Operator, </li><li>right click-&gt;Layers-&gt;Create Layers ...-&gt;Create Layer</li><li>The new layer shoul appear as the first layer of the top layer operator.</li><li>Attach the class1 and class2</li><li>Attach the fill property</li></ul><h2 id="Change_the_value_of_an_attached_property">Change the value of an attached property</h2><p>You can change the value of the fill property color for the layer.</p><ul><li>Open the node 'Color' of the 'Fill Property' </li><li>click on the color picker in the Property view. </li><li>Choose a new color (blue).</li><li>The color should be applied on the 2 classes attached to the layer (Class1 and Class2). </li><li>Class3 still have the color of the 'bottom' layer.</li></ul><p><img border="0" src="simpleTutorialImages/changeFillColorValue.png"/></p><ul><li>Note that Class1 and Class2 color change to 'blue' because when computing the color for Class1, the first layer that attach both Class1and Property Fill is the Layer1. In this layer, the value for the Property Fill is 'blue', so it is for Class1. The same happen for class2.</li></ul><h2 id="Add_the_3rd_layer">Add the 3rd layer</h2><ul><li>Add a 3rd layer<ul><li>Attach the 2 classes Class2 and Class3 to this layer.</li><li>Attach the property 'Fill Color'</li><li>Change the value of 'Fill Color' to orange<ul><li>Class2 and Class3 should change to orange.</li></ul></li></ul></li></ul><p><img border="0" src="simpleTutorialImages/layer2.png"/></p><h2 id="Disabling_a_Layer">Disabling a Layer</h2><p>It is possible to disable a layer without deleting it. A disabled layer do not participate in layer stack.</p><p>To disable a layer, select it in the LayersExplorer.</p><ul><li>Then in the PropertyView, open the Layers tab</li><li>select or unselect the layer with 'Is Layer Enable".<ul><li>Note that in our example, disabling the Layer2 will change the color of the Class2 and Class3. Class2 take the color specified by layer1, and Class3 the color specified by bottomLayer.</li></ul></li></ul><p><img border="0" src="simpleTutorialImages/disableLayer.png"/></p><h1 id="Layer_Operators">Layer Operators</h1><p>Layer Operators are a kind of layer that can contain other Layers.</p><p>A layer operator is called like this because it is used to apply an 'operator' on its nested layers. The operator compute the property values for attached layers.</p><p>It is not possible to attach directly views or properties to a layer operator. But a layer operator still have a set of attached views and a set of attached properties. The values of these properties are the results of applying the operator on the properties of the nested layers. The set of the attached views is generally the union of the views attached to the nested layers.</p><p>There is different kind of 'layer operators', each one proposing a different way of computing the property values.</p><h2 id="Top_Layer_Operator">Top Layer Operator</h2><p>The 'Top Layer Operator' contains layers that are ordered from top to bottom. It is called 'Top Layer Operator' because it return the top most value for a particular (view, property type) couple. </p><p>When computing the property value for a specified (view, property type), the Top Layer Operator return the first value found for this couple. It start from the top layer, and stop as soon as a layer as a value set for the specified (view, property type).</p></body></html> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial.mediawiki b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial.mediawiki
new file mode 100644
index 00000000000..c4289c45315
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorial.mediawiki
@@ -0,0 +1,136 @@
+
+
+= A simple Example and Tutorial =
+In this example, we create a class diagram with 3 classes (class1, class2, class3), and a LayersStack with 3 layers (layer2, layer1, bottom). The bottom layer control the 3 classes and all the available properties. The layer1 control Class1 and Class2. The layer2 control Class2 and Class3.
+
+This example is also a tutorial, if you follow it step by step.
+
+== Create a new Class Diagram ==
+Start by creating a Papyrus Class Diagram with 3 classes:
+* Create a new ClassDiagram in a Papyrus model
+* Create three classes: Class1, Class2, Class3
+* Open the Papyrus ModelExplorer and the Property View.
+You should have a diagram and model explorer like in the following figure:
+
+[[Image:simpleTutorialImages/diagramWith3Classes.png]]
+
+== Open the LayersExplorer ==
+To open the LayersExplorer:
+* In the diagram, Right Click->Layers->Open LayersExplorer
+[[Image:simpleTutorialImages/opnLayersExplorer.png]]
+
+* The explorer should open (not necessarly at the same position as in the following snapshoot):
+[[Image:simpleTutorialImages/OpenedLayersExplorer.png]]
+
+
+== Attach a LayersStack to your diagram ==
+To attach a LayersStack to your diagram:
+
+* Click in the diagram, then Right Click->Layers->Attach Layer Stack
+[[Image:simpleTutorialImages/attachLayersStack.png]]
+
+* The LayersExplorer should show the layers attached to the LayersStack. By default, there is a 'Layer Operator' of type 'Top Layer'. The 'Top Layer Operator' contains layers that are ordered from top to bottom. When computing the value for a particular (view, property type) couple, it search the first layer that define a value for the couple, and return this value.
+
+[[Image:simpleTutorialImages/attachedLayersStack.png]]
+
+== Create a new Layer in the LayersStack ==
+We need now to create a layer in the stack.
+
+To create a new Layer in the LayersStack:
+
+* In the LayerExplorer, select the Top Layer Operator
+* right click->Layers->Create Layers ...->Create Layer
+[[Image:simpleTutorialImages/createLayer.png]]
+
+* A new layer is created:
+** Open the tree node to see the layer (1)
+** Select the layers tab in the Property view (2)
+** Change the name of the layer to 'bottomLayer' (3)
+[[Image:simpleTutorialImages/createdLayer.png]]
+
+
+== Attach Classes to the Layer ==
+
+Attaching some classes (also called views) to a layer means that this layer will partially control the value of some properties for this attached classes.
+Here, we attach the 3 classes.
+To Attach the classes to the Layer:
+* Select the layer 'bottomLayer', right click->Layers->Attach Views
+[[Image:simpleTutorialImages/attachViewsToLayer.png]]
+
+* A window open, select the 3 classes (1) and click 'ok (2)'.:
+[[Image:simpleTutorialImages/attachViewWindowSelectClasses.png]]
+
+== Attach some properties to the layer ==
+
+A layer is used to control some properties of the attached views. It is necessary to attach the properties
+controled by the layer. Once attached, it is possible to modify the values of this properties.
+
+To attach some properties to the layer:
+* In the LayersExplorer, select the defaul layer, right click->Layers->Attach Properties
+[[Image:simpleTutorialImages/openAttachPropertiesWindow.png]]
+
+* The Attach Properties window open. Select properties as in the screenshot, and then 'ok'.
+[[Image:simpleTutorialImages/attachPropertiesWindow.png]]
+
+* The properties and the views are now attached to the layers. Properties for these views are computed according to the layer, and as a resul the fill color change. This is because the default value for 'fill color' of the layer property is different from the Papyrus value.
+** You can open the property node in the LayersExplorer, select a property, and change its value in the Property view.
+[[Image:simpleTutorialImages/defaulLayerProperties.png]]
+
+
+
+== Add more layers ==
+Now, add a new Layer in the Top Layer Operator:
+* Select the Top Layer Operator,
+* right click->Layers->Create Layers ...->Create Layer
+* The new layer shoul appear as the first layer of the top layer operator.
+* Attach the class1 and class2
+* Attach the fill property
+
+== Change the value of an attached property ==
+You can change the value of the fill property color for the layer.
+
+* Open the node 'Color' of the 'Fill Property'
+* click on the color picker in the Property view.
+* Choose a new color (blue).
+* The color should be applied on the 2 classes attached to the layer (Class1 and Class2).
+* Class3 still have the color of the 'bottom' layer.
+[[Image:simpleTutorialImages/changeFillColorValue.png]]
+
+
+* Note that Class1 and Class2 color change to 'blue' because when computing the color for Class1, the first layer that attach both Class1and Property Fill is the Layer1. In this layer, the value for the Property Fill is 'blue', so it is for Class1. The same happen for class2.
+
+== Add the 3rd layer ==
+* Add a 3rd layer
+** Attach the 2 classes Class2 and Class3 to this layer.
+** Attach the property 'Fill Color'
+** Change the value of 'Fill Color' to orange
+*** Class2 and Class3 should change to orange.
+[[Image:simpleTutorialImages/layer2.png]]
+
+
+== Disabling a Layer ==
+It is possible to disable a layer without deleting it. A disabled layer do not participate in layer stack.
+
+To disable a layer, select it in the LayersExplorer.
+* Then in the PropertyView, open the Layers tab
+* select or unselect the layer with 'Is Layer Enable".
+** Note that in our example, disabling the Layer2 will change the color of the Class2 and Class3. Class2 take the color specified by layer1, and Class3 the color specified by bottomLayer.
+[[Image:simpleTutorialImages/disableLayer.png]]
+
+
+= Layer Operators =
+Layer Operators are a kind of layer that can contain other Layers.
+
+A layer operator is called like this because it is used to apply an 'operator' on its nested layers. The operator compute the property values for attached layers.
+
+
+It is not possible to attach directly views or properties to a layer operator. But a layer operator still have a set of attached views and a set of attached properties. The values of these properties are the results of applying the operator on the properties of the nested layers. The set of the attached views is generally the union of the views attached to the nested layers.
+
+There is different kind of 'layer operators', each one proposing a different way of computing the property values.
+
+
+== Top Layer Operator ==
+The 'Top Layer Operator' contains layers that are ordered from top to bottom. It is called 'Top Layer Operator' because it return the top most value for a particular (view, property type) couple.
+
+When computing the property value for a specified (view, property type), the Top Layer Operator return the first value found for this couple. It start from the top layer, and stop as soon as a layer as a value set for the specified (view, property type).
+
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/OpenedLayersExplorer.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/OpenedLayersExplorer.png
new file mode 100644
index 00000000000..3243d6a59a0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/OpenedLayersExplorer.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachLayersStack.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachLayersStack.png
new file mode 100644
index 00000000000..fb89859462d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachLayersStack.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachPropertiesWindow.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachPropertiesWindow.png
new file mode 100644
index 00000000000..43352b552f8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachPropertiesWindow.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewWindow.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewWindow.png
new file mode 100644
index 00000000000..9aad29fef4c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewWindow.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewWindowSelectClasses.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewWindowSelectClasses.png
new file mode 100644
index 00000000000..3275da01c65
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewWindowSelectClasses.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewsToLayer.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewsToLayer.png
new file mode 100644
index 00000000000..669be6f747e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachViewsToLayer.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachedLayersStack.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachedLayersStack.png
new file mode 100644
index 00000000000..8d536ad621e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/attachedLayersStack.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/changeFillColorValue.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/changeFillColorValue.png
new file mode 100644
index 00000000000..db065e6effe
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/changeFillColorValue.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/createLayer.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/createLayer.png
new file mode 100644
index 00000000000..190ec7c5fba
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/createLayer.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/createdLayer.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/createdLayer.png
new file mode 100644
index 00000000000..27564e6d832
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/createdLayer.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/defaulLayerProperties.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/defaulLayerProperties.png
new file mode 100644
index 00000000000..e2da266906d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/defaulLayerProperties.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/diagramWith3Classes.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/diagramWith3Classes.png
new file mode 100644
index 00000000000..45529bd2afa
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/diagramWith3Classes.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/disableLayer.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/disableLayer.png
new file mode 100644
index 00000000000..f4cb2f36020
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/disableLayer.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/layer2.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/layer2.png
new file mode 100644
index 00000000000..9181d275fcb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/layer2.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/openAttachPropertiesWindow.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/openAttachPropertiesWindow.png
new file mode 100644
index 00000000000..79c2737f73e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/openAttachPropertiesWindow.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/opnLayersExplorer.png b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/opnLayersExplorer.png
new file mode 100644
index 00000000000..4a4a2c92104
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/tutorials/simpleTutorialImages/opnLayersExplorer.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/users/index-toc.xml b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/users/index-toc.xml
new file mode 100644
index 00000000000..6dc87b4974a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/guides/users/index-toc.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc label="Layers Documentation" >
+ <topic label="Layers Documentation">
+ <link toc="guides/tutorials/derivedLayerTutorial-toc.xml"/>
+ <anchor id="layers.guides.documentations"/>
+ </topic>
+</toc>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.di b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.di
new file mode 100644
index 00000000000..031012c311c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.di
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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="architecture-v3.notation#_--sO0LZJEeK8zaQi-hvdlw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_hBG18M9REeKO_rl5MA6s9A"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_uhhxMM9VEeKO_rl5MA6s9A"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_obL1sM-wEeKO_rl5MA6s9A"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_idQj4NIPEeKovM8ingMMQQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_6iyZcNIPEeKovM8ingMMQQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_g9wjMNITEeKovM8ingMMQQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_EvbecNLSEeKwWoA8j13SIg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_-hv_gNNmEeKwWoA8j13SIg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_12QZkNNnEeKwWoA8j13SIg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_3zc0INNpEeKwWoA8j13SIg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_TiMgUNRgEeKHbZ6TDsPmrQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_C6rDcNeMEeKpd73UUMObaQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_rVlkIEydEeObF6ELIGKT-g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_uPIkIEydEeObF6ELIGKT-g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_harzYFzGEeOeP67GJGKDkA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_HLcwQFzPEeOeP67GJGKDkA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_uQQgIXh8EeOlpfB_tZS-QA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_GqKscXiMEeOlpfB_tZS-QA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="architecture-v3.notation#_qdZ18IeYEeOyqaF0O659SA"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_--sO0LZJEeK8zaQi-hvdlw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_hBG18M9REeKO_rl5MA6s9A"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_uhhxMM9VEeKO_rl5MA6s9A"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_obL1sM-wEeKO_rl5MA6s9A"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_idQj4NIPEeKovM8ingMMQQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_6iyZcNIPEeKovM8ingMMQQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_g9wjMNITEeKovM8ingMMQQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_-hv_gNNmEeKwWoA8j13SIg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_12QZkNNnEeKwWoA8j13SIg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_uPIkIEydEeObF6ELIGKT-g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_3zc0INNpEeKwWoA8j13SIg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_TiMgUNRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_C6rDcNeMEeKpd73UUMObaQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_rVlkIEydEeObF6ELIGKT-g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_harzYFzGEeOeP67GJGKDkA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_HLcwQFzPEeOeP67GJGKDkA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_uQQgIXh8EeOlpfB_tZS-QA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_GqKscXiMEeOlpfB_tZS-QA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="architecture-v3.notation#_qdZ18IeYEeOyqaF0O659SA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.notation b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.notation
new file mode 100644
index 00000000000..e1bd904dd4e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.notation
@@ -0,0 +1,6901 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns: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/4.0.0/UML">
+ <notation:Diagram xmi:id="_--sO0LZJEeK8zaQi-hvdlw" type="PapyrusUMLClassDiagram" name="overview" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Iz1vALZKEeK8zaQi-hvdlw" type="2007" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Iz_gALZKEeK8zaQi-hvdlw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Iz_gAbZKEeK8zaQi-hvdlw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Iz_gArZKEeK8zaQi-hvdlw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Iz_gA7ZKEeK8zaQi-hvdlw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Iz_gBLZKEeK8zaQi-hvdlw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Iz_gBbZKEeK8zaQi-hvdlw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Iz_gBrZKEeK8zaQi-hvdlw" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Iz_gB7ZKEeK8zaQi-hvdlw" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Iz_gCLZKEeK8zaQi-hvdlw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Iz_gCbZKEeK8zaQi-hvdlw" y="60" width="200" height="74"/>
+ </children>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_IygSQLZKEeK8zaQi-hvdlw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Iz1vAbZKEeK8zaQi-hvdlw" x="162" y="192"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KAehQbZKEeK8zaQi-hvdlw" type="2007" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KAehQ7ZKEeK8zaQi-hvdlw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KAehRLZKEeK8zaQi-hvdlw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KAehRbZKEeK8zaQi-hvdlw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KAehRrZKEeK8zaQi-hvdlw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KAehR7ZKEeK8zaQi-hvdlw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KAehSLZKEeK8zaQi-hvdlw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KAehSbZKEeK8zaQi-hvdlw" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KAehSrZKEeK8zaQi-hvdlw" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_KAehS7ZKEeK8zaQi-hvdlw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KAehTLZKEeK8zaQi-hvdlw"/>
+ </children>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KAehQLZKEeK8zaQi-hvdlw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KAehQrZKEeK8zaQi-hvdlw" x="162" y="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KxknALZKEeK8zaQi-hvdlw" type="2007" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KxknArZKEeK8zaQi-hvdlw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KxknA7ZKEeK8zaQi-hvdlw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KxknBLZKEeK8zaQi-hvdlw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KxknBbZKEeK8zaQi-hvdlw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KxknBrZKEeK8zaQi-hvdlw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KxknB7ZKEeK8zaQi-hvdlw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KxknCLZKEeK8zaQi-hvdlw" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KxknCbZKEeK8zaQi-hvdlw" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_KxknCrZKEeK8zaQi-hvdlw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KxknC7ZKEeK8zaQi-hvdlw"/>
+ </children>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KxbdELZKEeK8zaQi-hvdlw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KxknAbZKEeK8zaQi-hvdlw" x="162" y="336"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ShPUUL2QEeKKJJ5BmR3W3Q" type="2007" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ShP7YL2QEeKKJJ5BmR3W3Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ShP7Yb2QEeKKJJ5BmR3W3Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ShP7Yr2QEeKKJJ5BmR3W3Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ShP7Y72QEeKKJJ5BmR3W3Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ShP7ZL2QEeKKJJ5BmR3W3Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ShP7Zb2QEeKKJJ5BmR3W3Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ShQicL2QEeKKJJ5BmR3W3Q" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ShQicb2QEeKKJJ5BmR3W3Q" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ShQicr2QEeKKJJ5BmR3W3Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ShQic72QEeKKJJ5BmR3W3Q"/>
+ </children>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_ShE8QL2QEeKKJJ5BmR3W3Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ShPUUb2QEeKKJJ5BmR3W3Q" x="162" y="480" width="415"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_--sO0bZJEeK8zaQi-hvdlw"/>
+ <element xmi:type="uml:Model" href="architecture-v3.uml#_-7kCULZJEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_NCpRwLZKEeK8zaQi-hvdlw" type="4008" source="_Iz1vALZKEeK8zaQi-hvdlw" target="_KxknALZKEeK8zaQi-hvdlw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NCpRw7ZKEeK8zaQi-hvdlw" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NCpRxLZKEeK8zaQi-hvdlw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NCpRxbZKEeK8zaQi-hvdlw" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NCpRxrZKEeK8zaQi-hvdlw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NCpRwbZKEeK8zaQi-hvdlw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Dependency" href="architecture-v3.uml#_NCWW0LZKEeK8zaQi-hvdlw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NCpRwrZKEeK8zaQi-hvdlw" points="[-7, 11, 0, -111]$[-7, 122, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NDipoLZKEeK8zaQi-hvdlw" id="(0.375,0.89)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NDipobZKEeK8zaQi-hvdlw" id="(0.385,0.02)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OVNs4bZKEeK8zaQi-hvdlw" type="4008" source="_KAehQbZKEeK8zaQi-hvdlw" target="_Iz1vALZKEeK8zaQi-hvdlw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OVXd4LZKEeK8zaQi-hvdlw" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OVXd4bZKEeK8zaQi-hvdlw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OVXd4rZKEeK8zaQi-hvdlw" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OVXd47ZKEeK8zaQi-hvdlw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OVNs4rZKEeK8zaQi-hvdlw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Dependency" href="architecture-v3.uml#_OVNs4LZKEeK8zaQi-hvdlw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OVNs47ZKEeK8zaQi-hvdlw" points="[30, 34, -130, -142]$[116, 128, -44, -48]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVXd5LZKEeK8zaQi-hvdlw" id="(0.575,0.94)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVXd5bZKEeK8zaQi-hvdlw" id="(0.61,0.23)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_V2KBsL2QEeKKJJ5BmR3W3Q" type="4008" source="_KxknALZKEeK8zaQi-hvdlw" target="_ShPUUL2QEeKKJJ5BmR3W3Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_V2LP0L2QEeKKJJ5BmR3W3Q" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V2LP0b2QEeKKJJ5BmR3W3Q" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V2L24L2QEeKKJJ5BmR3W3Q" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V2L24b2QEeKKJJ5BmR3W3Q" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_V2KBsb2QEeKKJJ5BmR3W3Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Dependency" href="architecture-v3.uml#_V114oL2QEeKKJJ5BmR3W3Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_V2KBsr2QEeKKJJ5BmR3W3Q" points="[5, -2, -158, 0]$[129, 1, -34, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V2TysL2QEeKKJJ5BmR3W3Q" id="(0.68,0.96)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ybg2MHboEeOlpfB_tZS-QA" id="(0.3036144578313253,0.15)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Xjg7YL2QEeKKJJ5BmR3W3Q" type="4008" source="_Iz1vALZKEeK8zaQi-hvdlw" target="_ShPUUL2QEeKKJJ5BmR3W3Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XjiJgL2QEeKKJJ5BmR3W3Q" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XjiJgb2QEeKKJJ5BmR3W3Q" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XjiJgr2QEeKKJJ5BmR3W3Q" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XjiJg72QEeKKJJ5BmR3W3Q" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Xjg7Yb2QEeKKJJ5BmR3W3Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Dependency" href="architecture-v3.uml#_Xjd4EL2QEeKKJJ5BmR3W3Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Xjg7Yr2QEeKKJJ5BmR3W3Q" points="[11, 10, -146, -130]$[151, 138, -6, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XjpeQL2QEeKKJJ5BmR3W3Q" id="(0.83,0.21)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XjpeQb2QEeKKJJ5BmR3W3Q" id="(0.6313253012048192,0.14)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_hBG18M9REeKO_rl5MA6s9A" type="PapyrusUMLClassDiagram" name="ui" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_hxns4M9REeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hxr-UM9REeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hxslYM9REeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hxslYc9REeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hxslYs9REeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hxtMcM9REeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hxtMcc9REeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hxtMcs9REeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hxtzgM9REeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hxtzgc9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hxtzgs9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hxtzg89REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxtzhM9REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hxtzhc9REeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hxtzhs9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hxtzh89REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hxtziM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxtzic9REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hxtzis9REeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hxtzi89REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hxtzjM9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hxtzjc9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxtzjs9REeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_hwJtQM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxns4c9REeKO_rl5MA6s9A" x="72" y="330"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jf2JQM9REeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jf3XYM9REeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jf3-cM9REeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jf3-cc9REeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jf3-cs9REeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jf3-c89REeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jf3-dM9REeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jf3-dc9REeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jf4lgM9REeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jf4lgc9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jf4lgs9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jf4lg89REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jf4lhM9REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jf4lhc9REeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jf4lhs9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jf4lh89REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jf4liM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jf4lic9REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jf5MkM9REeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jf5Mkc9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jf5Mks9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jf5Mk89REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jf5MlM9REeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_jfm4sM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jf2JQc9REeKO_rl5MA6s9A" x="654" y="582" width="140" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l9IEAM9REeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l9JSIM9REeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l9JSIc9REeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l9JSIs9REeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l9JSI89REeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l9J5MM9REeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l9J5Mc9REeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l9J5Ms9REeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l9J5M89REeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l9J5NM9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l9J5Nc9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l9J5Ns9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l9J5N89REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l9KgQM9REeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l9KgQc9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l9KgQs9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l9KgQ89REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l9KgRM9REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l9KgRc9REeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l9KgRs9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l9KgR89REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l9KgSM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l9KgSc9REeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_l8z68M9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l9IrEM9REeKO_rl5MA6s9A" x="498" y="582"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nrSO8M9REeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nrS2AM9REeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nrTdEM9REeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nrTdEc9REeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nrTdEs9REeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nrTdE89REeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nrTdFM9REeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nrTdFc9REeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nrUEIM9REeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nrUEIc9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nrUEIs9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nrUEI89REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nrUEJM9REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nrUEJc9REeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nrUEJs9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nrUEJ89REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nrUEKM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nrUEKc9REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nrUEKs9REeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nrUEK89REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nrUELM9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nrUELc9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nrUELs9REeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_nrEMgM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nrSO8c9REeKO_rl5MA6s9A" x="300" y="582"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rc6tgM9REeKO_rl5MA6s9A" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rc77oM9REeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rc77oc9REeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rc77os9REeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rc77o89REeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rc77pM9REeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rc8isM9REeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rc8isc9REeKO_rl5MA6s9A" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_rcDK0M9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rc6tgc9REeKO_rl5MA6s9A" x="570" y="192" width="105" height="99"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yfNEgM9REeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yfNrkM9REeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yfOSoM9REeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yfOSoc9REeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yfOSos9REeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yfOSo89REeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yfOSpM9REeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yfOSpc9REeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yfOSps9REeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yfOSp89REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yfOSqM9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yfOSqc9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yfOSqs9REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yfO5sM9REeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yfO5sc9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yfO5ss9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yfO5s89REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yfO5tM9REeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yfO5tc9REeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yfO5ts9REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yfO5t89REeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yfO5uM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yfO5uc9REeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_yeyNwM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yfNEgc9REeKO_rl5MA6s9A" x="343" y="328"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1THWkM9REeKO_rl5MA6s9A" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1TIksM9REeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1TIksc9REeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1TIkss9REeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1TIks89REeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1TIktM9REeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1TIktc9REeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1TIkts9REeKO_rl5MA6s9A" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_1S4tEM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1THWkc9REeKO_rl5MA6s9A" x="72" y="66"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_OvFaoM9SEeKO_rl5MA6s9A" type="2012" fontName="Segoe UI" fillColor="13420443" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OvH24M9SEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OvH24c9SEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OvH24s9SEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OvId8M9SEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OvId8c9SEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OvId8s9SEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OvId889SEeKO_rl5MA6s9A" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_-YSyYM9REeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OvFaoc9SEeKO_rl5MA6s9A" x="192" y="444"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cxJAIM9SEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cxKOQM9SEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cxKOQc9SEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cxKOQs9SEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cxKOQ89SEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cxKORM9SEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cxKORc9SEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cxK1UM9SEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cxK1Uc9SEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cxK1Us9SEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cxK1U89SEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cxK1VM9SEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cxK1Vc9SEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cxK1Vs9SEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cxK1V89SEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cxK1WM9SEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cxK1Wc9SEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cxK1Ws9SEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cxK1W89SEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cxK1XM9SEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cxK1Xc9SEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cxK1Xs9SEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cxK1X89SEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_cw2FMM9SEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cxJnMM9SEeKO_rl5MA6s9A" x="336" y="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_G-Wz0M9TEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-Xa4M9TEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-Xa4c9TEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-Xa4s9TEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-Xa489TEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-Xa5M9TEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-YB8M9TEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G-YB8c9TEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G-YB8s9TEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G-YB889TEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G-YB9M9TEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G-YB9c9TEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-YB9s9TEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G-YB989TEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G-YB-M9TEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G-YB-c9TEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G-YB-s9TEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-YB-89TEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G-YB_M9TEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G-YB_c9TEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G-YB_s9TEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G-YB_89TEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-YCAM9TEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_G-A1kM9TEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-Wz0c9TEeKO_rl5MA6s9A" x="546" y="318"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LyYjgM9TEeKO_rl5MA6s9A" type="2012" fontName="Segoe UI" fillColor="13420443" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LyZxoM9TEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LyaYsM9TEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LyaYsc9TEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LyaYss9TEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Lya_wM9TEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Lya_wc9TEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Lya_ws9TEeKO_rl5MA6s9A" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_hEcoYM9SEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LyYjgc9TEeKO_rl5MA6s9A" x="270" y="12" width="269" height="130"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rq_eYM9UEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rrAsgM9UEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rrAsgc9UEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rrAsgs9UEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rrAsg89UEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhbX8M9VEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhbX8c9VEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rrBTkc9UEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rrBTks9UEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrBTk89UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rrBTlM9UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rrBTlc9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrBTls9UEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rrBTl89UEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrBTmM9UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rrBTmc9UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rrBTms9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrBTm89UEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rrBTnM9UEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrBTnc9UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rrBTns9UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rrBTn89UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrBToM9UEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_rqknoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rq_eYc9UEeKO_rl5MA6s9A" x="540" y="756"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_t0oEYM9UEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t0pSgM9UEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t0pSgc9UEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t0pSgs9UEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t0pSg89UEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhaw4M9VEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhaw4c9VEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t0pShs9UEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t0p5kM9UEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t0p5kc9UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t0p5ks9UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t0p5k89UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t0p5lM9UEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t0p5lc9UEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t0p5ls9UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t0p5l89UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t0p5mM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t0p5mc9UEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t0p5ms9UEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t0p5m89UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t0p5nM9UEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t0p5nc9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t0p5ns9UEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_t0NNoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t0oEYc9UEeKO_rl5MA6s9A" x="750" y="756"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_hBG18c9REeKO_rl5MA6s9A"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KAehQLZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_EdL3kM9TEeKO_rl5MA6s9A" type="4008" source="_yfNEgM9REeKO_rl5MA6s9A" target="_cxJAIM9SEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EdNFsM9TEeKO_rl5MA6s9A" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EdNFsc9TEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EdNswM9TEeKO_rl5MA6s9A" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EdNswc9TEeKO_rl5MA6s9A" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_EdL3kc9TEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Dependency" href="architecture-v3.uml#_Ecf7EM9TEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EdL3ks9TEeKO_rl5MA6s9A" points="[-7, -7, 0, 81]$[-13, -74, -6, 14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EdVokM9TEeKO_rl5MA6s9A" id="(0.41,0.07)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EdWPoM9TEeKO_rl5MA6s9A" id="(0.37272727272727274,0.86)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Sa8y8M9TEeKO_rl5MA6s9A" type="4002" source="_nrSO8M9REeKO_rl5MA6s9A" target="_G-Wz0M9TEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Sa-BEM9TEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Sa-BEc9TEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Sa8y8c9TEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_SaqfEM9TEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Sa8y8s9TEeKO_rl5MA6s9A" points="[8, -8, -182, 172]$[187, -172, -3, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SbC5kM9TEeKO_rl5MA6s9A" id="(0.6038961038961039,0.08)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SbC5kc9TEeKO_rl5MA6s9A" id="(0.37,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_S56m4M9TEeKO_rl5MA6s9A" type="4002" source="_l9IEAM9REeKO_rl5MA6s9A" target="_G-Wz0M9TEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_S571AM9TEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S571Ac9TEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_S56m4c9TEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_S5l2wM9TEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_S56m4s9TEeKO_rl5MA6s9A" points="[2, -14, -28, 174]$[24, -178, -6, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S6AtgM9TEeKO_rl5MA6s9A" id="(0.44,0.14)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S6Atgc9TEeKO_rl5MA6s9A" id="(0.26,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_TdRLkM9TEeKO_rl5MA6s9A" type="4002" source="_jf2JQM9REeKO_rl5MA6s9A" target="_G-Wz0M9TEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TdSZsM9TEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TdSZsc9TEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_TdRLkc9TEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_TdEXQM9TEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TdRLks9TEeKO_rl5MA6s9A" points="[-8, -13, 99, 174]$[-109, -177, -2, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TdXSMM9TEeKO_rl5MA6s9A" id="(0.29285714285714287,0.14285714285714285)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TdXSMc9TEeKO_rl5MA6s9A" id="(0.42,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__DZ6AM9TEeKO_rl5MA6s9A" type="4001" source="_yfNEgM9REeKO_rl5MA6s9A" target="_G-Wz0M9TEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="__DbIIM9TEeKO_rl5MA6s9A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__DbIIc9TEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__DbIIs9TEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__DbII89TEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__DbIJM9TEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__DbIJc9TEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__DbIJs9TEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__DbvMM9TEeKO_rl5MA6s9A" x="-23" y="24"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__DbvMc9TEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__DbvMs9TEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__DbvM89TEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__DbvNM9TEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__DZ6Ac9TEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#__DARYM9TEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__DZ6As9TEeKO_rl5MA6s9A" points="[8, 0, -120, -10]$[111, 10, -17, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__DnVYM9TEeKO_rl5MA6s9A" id="(0.92,0.3)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__DnVYc9TEeKO_rl5MA6s9A" id="(0.17,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LhMQYM9UEeKO_rl5MA6s9A" type="4001" source="_hxns4M9REeKO_rl5MA6s9A" target="_yfNEgM9REeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LhNegM9UEeKO_rl5MA6s9A" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LhNegc9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LhNegs9UEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LhNeg89UEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LhOFkM9UEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LhOFkc9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LhOFks9UEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LhOFk89UEeKO_rl5MA6s9A" x="-35" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LhOFlM9UEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LhOFlc9UEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LhOFls9UEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LhOsoM9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LhMQYc9UEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_Lg4HUM9UEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LhMQYs9UEeKO_rl5MA6s9A" points="[9, -4, -195, 0]$[180, -18, -24, -14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LhYdoM9UEeKO_rl5MA6s9A" id="(0.91,0.37)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LhYdoc9UEeKO_rl5MA6s9A" id="(0.24,0.35)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_w04wYM9UEeKO_rl5MA6s9A" type="4001" source="_l9IEAM9REeKO_rl5MA6s9A" target="_rq_eYM9UEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_w05-gM9UEeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w05-gc9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w05-gs9UEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w05-g89UEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w05-hM9UEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w05-hc9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w06lkM9UEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w06lkc9UEeKO_rl5MA6s9A" x="-3" y="78"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w06lks9UEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w06lk89UEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w06llM9UEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w06llc9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_w04wYc9UEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_w0iyIM9UEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w04wYs9UEeKO_rl5MA6s9A" points="[4, 10, 0, -78]$[1, 84, -3, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w1FksM9UEeKO_rl5MA6s9A" id="(0.63,0.9)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w1Fksc9UEeKO_rl5MA6s9A" id="(0.25,0.04)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_455IoM9UEeKO_rl5MA6s9A" type="4001" source="_jf2JQM9REeKO_rl5MA6s9A" target="_rq_eYM9UEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_455vsM9UEeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_455vsc9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_456WwM9UEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_456Wwc9UEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_456Wws9UEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_456Ww89UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_456WxM9UEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_456Wxc9UEeKO_rl5MA6s9A" x="-53" y="-51"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_456Wxs9UEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_45690M9UEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_45690c9UEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_45690s9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_455Ioc9UEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_45kYgM9UEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_455Ios9UEeKO_rl5MA6s9A" points="[-6, 7, 71, -86]$[-76, 90, 1, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_46C5oM9UEeKO_rl5MA6s9A" id="(0.29285714285714287,0.9230769230769231)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_46C5oc9UEeKO_rl5MA6s9A" id="(0.78,0.03)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5vqTAM9UEeKO_rl5MA6s9A" type="4001" source="_jf2JQM9REeKO_rl5MA6s9A" target="_t0oEYM9UEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5vrhIM9UEeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5vrhIc9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5vrhIs9UEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5vrhI89UEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5vrhJM9UEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5vrhJc9UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5vrhJs9UEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5vrhJ89UEeKO_rl5MA6s9A" x="28" y="-61"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5vsIMM9UEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5vsIMc9UEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5vsIMs9UEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5vsIM89UEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5vqTAc9UEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_5vWJ8M9UEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5vqTAs9UEeKO_rl5MA6s9A" points="[5, 11, -46, -92]$[47, 94, -4, -9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5v0rEM9UEeKO_rl5MA6s9A" id="(0.5642857142857143,0.8791208791208791)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5v0rEc9UEeKO_rl5MA6s9A" id="(0.34,0.09)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_uhhxMM9VEeKO_rl5MA6s9A" type="PapyrusUMLClassDiagram" name="stackmodel" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_vMhO8M9VEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMjEIM9VEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMjEIc9VEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMjrMM9VEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMjrMc9VEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMjrMs9VEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMjrM89VEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vMkSQM9VEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vMkSQc9VEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vMkSQs9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vMkSQ89VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkSRM9VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkSRc9VEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vMk5UM9VEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vMk5Uc9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vMk5Us9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vMk5U89VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMk5VM9VEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vMlgYM9VEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vMlgYc9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vMlgYs9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vMlgY89VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMlgZM9VEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_t0NNoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMhO8c9VEeKO_rl5MA6s9A" x="210" y="282"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ynMmEM9VEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ynNNIM9VEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ynNNIc9VEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ynNNIs9VEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ynNNI89VEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ynNNJM9VEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ynN0MM9VEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ynN0Mc9VEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ynN0Ms9VEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ynN0M89VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ynN0NM9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ynN0Nc9VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ynN0Ns9VEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ynN0N89VEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ynN0OM9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ynN0Oc9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ynN0Os9VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ynN0O89VEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ynN0PM9VEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ynObQM9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ynObQc9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ynObQs9VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ynObQ89VEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_rqknoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ynMmEc9VEeKO_rl5MA6s9A" x="228" y="42"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0RKNgM9VEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0RK0kM9VEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0RK0kc9VEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0RK0ks9VEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0RK0k89VEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0RLboM9VEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0RLboc9VEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0RLbos9VEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0RLbo89VEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0RLbpM9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0RLbpc9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0RLbps9VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0RLbp89VEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0RLbqM9VEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0RLbqc9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0RLbqs9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0RLbq89VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0RLbrM9VEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0RMCsM9VEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0RMCsc9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0RMCss9VEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0RMCs89VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0RMCtM9VEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_0Q5HwM9VEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0RKNgc9VEeKO_rl5MA6s9A" x="78" y="168"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_uhhxMc9VEeKO_rl5MA6s9A"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KxbdELZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3iNHgM9VEeKO_rl5MA6s9A" type="4001" source="_vMhO8M9VEeKO_rl5MA6s9A" target="_ynMmEM9VEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3iOVoM9VEeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3iOVoc9VEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3iOVos9VEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3iOVo89VEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3iO8sM9VEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3iO8sc9VEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3iO8ss9VEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3iO8s89VEeKO_rl5MA6s9A" x="-9" y="51"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3iO8tM9VEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3iO8tc9VEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3iO8ts9VEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3iO8t89VEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3iNHgc9VEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_3h0tAM9VEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3iNHgs9VEeKO_rl5MA6s9A" points="[6, -12, 0, 148]$[7, -152, 1, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3iai4M9VEeKO_rl5MA6s9A" id="(0.7,0.12)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3iai4c9VEeKO_rl5MA6s9A" id="(0.58,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5PwOcM9VEeKO_rl5MA6s9A" type="4001" source="_ynMmEM9VEeKO_rl5MA6s9A" target="_0RKNgM9VEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5PxckM9VEeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5Pxckc9VEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5Pxcks9VEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5Pxck89VEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5PxclM9VEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5Pxclc9VEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5Pxcls9VEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5PyDoM9VEeKO_rl5MA6s9A" x="31" y="39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5PyDoc9VEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5PyDos9VEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5PyDo89VEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5PyDpM9VEeKO_rl5MA6s9A" x="-26" y="-13"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5PwOcc9VEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_5PcFYM9VEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5PwOcs9VEeKO_rl5MA6s9A" points="[-7, 3, 82, -47]$[-88, 47, 1, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5P6mgM9VEeKO_rl5MA6s9A" id="(0.07,0.79)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5P6mgc9VEeKO_rl5MA6s9A" id="(0.68,0.03)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_55fvAM9VEeKO_rl5MA6s9A" type="4001" source="_0RKNgM9VEeKO_rl5MA6s9A" target="_vMhO8M9VEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_55g9IM9VEeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_55g9Ic9VEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_55g9Is9VEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_55g9I89VEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_55g9JM9VEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_55g9Jc9VEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_55hkMM9VEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_55hkMc9VEeKO_rl5MA6s9A" x="-20" y="29"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_55hkMs9VEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_55hkM89VEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_55iLQM9VEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_55iLQc9VEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_55fvAc9VEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_55Ll8M9VEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_55fvAs9VEeKO_rl5MA6s9A" points="[4, 3, -68, -45]$[54, 37, -18, -11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_55qHEM9VEeKO_rl5MA6s9A" id="(0.78,0.97)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_55qHEc9VEeKO_rl5MA6s9A" id="(0.18,0.31)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_obL1sM-wEeKO_rl5MA6s9A" type="PapyrusUMLClassDiagram" name="Layer expr" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_q3ZZcM-wEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q3ZZcs-wEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3ZZc8-wEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q3ZZdM-wEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3ZZdc-wEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q3ZZds-wEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3ZZd8-wEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q3ZZeM-wEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q3ZZec-wEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q3ZZes-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q3ZZe8-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q3ZZfM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q3ZZfc-wEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q3ZZfs-wEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q3ZZf8-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q3ZZgM-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q3ZZgc-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q3ZZgs-wEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q3ZZg8-wEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q3ZZhM-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q3ZZhc-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q3ZZhs-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q3ZZh8-wEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_q3GegM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q3ZZcc-wEeKO_rl5MA6s9A" x="300" y="96" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_sae80M-wEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sae80s-wEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sae808-wEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sae81M-wEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sae81c-wEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sae81s-wEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sae818-wEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sae82M-wEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sae82c-wEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sae82s-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sae828-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sae83M-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sae83c-wEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sae83s-wEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sae838-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sae84M-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sae84c-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sae84s-wEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sae848-wEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sae85M-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sae85c-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sae85s-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sae858-wEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_saCQ4M-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sae80c-wEeKO_rl5MA6s9A" x="120" y="228" width="169" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uI4_YM-wEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uI4_Ys-wEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uI4_Y8-wEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uI4_ZM-wEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uJCJUM-wEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uJCJUc-wEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uJCJUs-wEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uJCJU8-wEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uJCJVM-wEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uJCJVc-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uJCJVs-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uJCJV8-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uJCJWM-wEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uJCJWc-wEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uJCJWs-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uJCJW8-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uJCJXM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uJCJXc-wEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uJCJXs-wEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uJCJX8-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uJCJYM-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uJCJYc-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uJCJYs-wEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_uIcTcM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uI4_Yc-wEeKO_rl5MA6s9A" x="684" y="222" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zRZxUM-wEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zRZxUs-wEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zRZxU8-wEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zRZxVM-wEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zRZxVc-wEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zRZxVs-wEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zRZxV8-wEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zRZxWM-wEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zRZxWc-wEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zRZxWs-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zRZxW8-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zRZxXM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zRZxXc-wEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zRZxXs-wEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zRZxX8-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zRZxYM-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zRZxYc-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zRZxYs-wEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zRZxY8-wEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zRZxZM-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zRZxZc-wEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zRZxZs-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zRZxZ8-wEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_zRG2YM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zRZxUc-wEeKO_rl5MA6s9A" x="174" y="348" height="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cL1ugM-xEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cL1ugs-xEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cL1ug8-xEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cL1uhM-xEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cL1uhc-xEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cL1uhs-xEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cL1uh8-xEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cL1uiM-xEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cL_fgM-xEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cL_fgc-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cL_fgs-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cL_fg8-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cL_fhM-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cL_fhc-xEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cL_fhs-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cL_fh8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cL_fiM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cL_fic-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cL_fis-xEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cL_fi8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cL_fjM-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cL_fjc-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cL_fjs-xEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_cLZCkM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cL1ugc-xEeKO_rl5MA6s9A" x="12" y="350" height="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hqM0oM-xEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hqM0os-xEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hqM0o8-xEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hqM0pM-xEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hqM0pc-xEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hqM0ps-xEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hqM0p8-xEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hqM0qM-xEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hqM0qc-xEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hqM0qs-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hqM0q8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hqM0rM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hqM0rc-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hqM0rs-xEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hqM0r8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hqM0sM-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hqM0sc-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hqM0ss-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hqM0s8-xEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hqM0tM-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hqM0tc-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hqM0ts-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hqM0t8-xEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_hp55sM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hqM0oc-xEeKO_rl5MA6s9A" x="89" y="443" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jApDIM-xEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jApDIs-xEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jApDI8-xEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jApDJM-xEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jApDJc-xEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jApDJs-xEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jApDJ8-xEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jApDKM-xEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jApDKc-xEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jApDKs-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jApDK8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jApDLM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jApDLc-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jApDLs-xEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jApDL8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jApDMM-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jApDMc-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jApDMs-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jApDM8-xEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jApDNM-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jApDNc-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jApDNs-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jApDN8-xEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_jAMXMM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jApDIc-xEeKO_rl5MA6s9A" x="270" y="444" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_t0dLAM-xEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t0dLAs-xEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t0dLA8-xEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t0dLBM-xEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t0dLBc-xEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t0dLBs-xEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t0dLB8-xEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t0dLCM-xEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t0dLCc-xEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t0dLCs-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t0dLC8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t0dLDM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t0dLDc-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t0dLDs-xEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t0dLD8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t0dLEM-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t0dLEc-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t0dLEs-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t0dLE8-xEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t0dLFM-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t0dLFc-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t0dLFs-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t0dLF8-xEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_t0KQEM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t0dLAc-xEeKO_rl5MA6s9A" x="780" y="348" height="38"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_u7RpIM-xEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u7RpIs-xEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u7RpI8-xEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u7RpJM-xEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u7RpJc-xEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u7RpJs-xEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u7RpJ8-xEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_u7RpKM-xEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_u7RpKc-xEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_u7RpKs-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_u7RpK8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_u7RpLM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u7RpLc-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_u7RpLs-xEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_u7RpL8-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_u7RpMM-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_u7RpMc-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u7RpMs-xEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_u7RpM8-xEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_u7RpNM-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_u7RpNc-xEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_u7RpNs-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u7RpN8-xEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_u6-HIM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u7RpIc-xEeKO_rl5MA6s9A" x="630" y="348" height="38"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SaLKsM-yEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SaLxwM-yEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SaLxwc-yEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SaLxws-yEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SaMY0M-yEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SaMY0c-yEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SaMY0s-yEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SaMY08-yEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SaMY1M-yEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SaMY1c-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SaMY1s-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SaMY18-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SaMY2M-yEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SaM_4M-yEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SaM_4c-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SaM_4s-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SaM_48-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SaM_5M-yEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SaM_5c-yEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SaM_5s-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SaM_58-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SaM_6M-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SaM_6c-yEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_SZ1McM-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SaLKsc-yEeKO_rl5MA6s9A" x="456" y="348" height="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Uz6pQM-yEeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uz73YM-yEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uz73Yc-yEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uz73Ys-yEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uz8ecM-yEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uz8ecc-yEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uz8ecs-yEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uz8ec8-yEeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uz9FgM-yEeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uz9Fgc-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uz9Fgs-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uz9Fg8-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uz9FhM-yEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uz9Fhc-yEeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uz9Fhs-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uz9Fh8-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uz9FiM-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uz9Fic-yEeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uz9skM-yEeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uz9skc-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uz9sks-yEeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uz9sk8-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uz9slM-yEeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_UzekYM-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uz6pQc-yEeKO_rl5MA6s9A" x="534" y="468" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZtLo0M-zEeKO_rl5MA6s9A" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZtLo0s-zEeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZtLo08-zEeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZtLo1M-zEeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZtLo1c-zEeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZtLo1s-zEeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZtLo18-zEeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZtLo2M-zEeKO_rl5MA6s9A" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_KvpSgM-zEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZtLo0c-zEeKO_rl5MA6s9A" x="306" y="258" width="283"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kfEooM-0EeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kfEoos-0EeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kfEoo8-0EeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kfEopM-0EeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kfEopc-0EeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kfEops-0EeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kfEop8-0EeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kfEoqM-0EeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kfEoqc-0EeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_kfEoqs-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kfEoq8-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kfEorM-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kfEorc-0EeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kfEors-0EeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_kfEor8-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kfEosM-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kfEosc-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kfEoss-0EeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kfEos8-0EeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_kfEotM-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kfEotc-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kfEots-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kfEot8-0EeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_kextsM-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kfEooc-0EeKO_rl5MA6s9A" x="912" y="198" height="50"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l5OScM-0EeKO_rl5MA6s9A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l5OScs-0EeKO_rl5MA6s9A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l5OSc8-0EeKO_rl5MA6s9A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l5OSdM-0EeKO_rl5MA6s9A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l5OSdc-0EeKO_rl5MA6s9A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l5OSds-0EeKO_rl5MA6s9A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l5OSd8-0EeKO_rl5MA6s9A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l5OSeM-0EeKO_rl5MA6s9A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l5OSec-0EeKO_rl5MA6s9A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l5OSes-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l5OSe8-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l5OSfM-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l5OSfc-0EeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l5OSfs-0EeKO_rl5MA6s9A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l5OSf8-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l5OSgM-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l5OSgc-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l5OSgs-0EeKO_rl5MA6s9A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l5OSg8-0EeKO_rl5MA6s9A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l5OShM-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l5OShc-0EeKO_rl5MA6s9A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l5OShs-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l5OSh8-0EeKO_rl5MA6s9A"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_l4yNkM-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l5OScc-0EeKO_rl5MA6s9A" x="912" y="270" height="51"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_obL1sc-wEeKO_rl5MA6s9A"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KxbdELZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_w9q0IM-wEeKO_rl5MA6s9A" type="4002" source="_sae80M-wEeKO_rl5MA6s9A" target="_q3ZZcM-wEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_w9q0I8-wEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w9q0JM-wEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_w9q0Ic-wEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_w9X5MM-wEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w9q0Is-wEeKO_rl5MA6s9A" points="[11, -7, -116, 71]$[126, -75, -1, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w9q0Jc-wEeKO_rl5MA6s9A" id="(0.6335877862595419,0.07)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w9q0Js-wEeKO_rl5MA6s9A" id="(0.4528301886792453,0.97)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_x2pqkM-wEeKO_rl5MA6s9A" type="4002" source="_uI4_YM-wEeKO_rl5MA6s9A" target="_q3ZZcM-wEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_x2pqk8-wEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_x2pqlM-wEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_x2pqkc-wEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_x2M-oM-wEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_x2pqks-wEeKO_rl5MA6s9A" points="[-17, -8, 160, 80]$[-179, -76, -2, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_x2pqlc-wEeKO_rl5MA6s9A" id="(0.32,0.08)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_x2pqls-wEeKO_rl5MA6s9A" id="(0.44339622641509435,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_oo1asM-xEeKO_rl5MA6s9A" type="4002" source="_cL1ugM-xEeKO_rl5MA6s9A" target="_sae80M-wEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_oo1as8-xEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oo1atM-xEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_oo1asc-xEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_ooh4sM-xEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oo1ass-xEeKO_rl5MA6s9A" points="[11, -8, -103, 74]$[109, -75, -5, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oo1atc-xEeKO_rl5MA6s9A" id="(0.5675675675675675,0.1568627450980392)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oo1ats-xEeKO_rl5MA6s9A" id="(0.3893129770992366,0.8727272727272727)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_peFnsM-xEeKO_rl5MA6s9A" type="4002" source="_zRZxUM-wEeKO_rl5MA6s9A" target="_sae80M-wEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_peFns8-xEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_peFntM-xEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_peFnsc-xEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_pd8dwM-xEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_peFnss-xEeKO_rl5MA6s9A" points="[-3, -8, 27, 74]$[-32, -73, -2, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pePYsM-xEeKO_rl5MA6s9A" id="(0.56,0.1568627450980392)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pePYsc-xEeKO_rl5MA6s9A" id="(0.4732824427480916,0.8363636363636363)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_qGaL8M-xEeKO_rl5MA6s9A" type="4002" source="_hqM0oM-xEeKO_rl5MA6s9A" target="_zRZxUM-wEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qGaL88-xEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qGaL9M-xEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_qGaL8c-xEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_qGHRAM-xEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qGaL8s-xEeKO_rl5MA6s9A" points="[7, -7, -58, 55]$[50, -51, -15, 11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qGaL9c-xEeKO_rl5MA6s9A" id="(0.45132743362831856,0.12727272727272726)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qGaL9s-xEeKO_rl5MA6s9A" id="(0.31,0.7843137254901961)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_qvCSMM-xEeKO_rl5MA6s9A" type="4002" source="_jApDIM-xEeKO_rl5MA6s9A" target="_zRZxUM-wEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qvCSM8-xEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qvCSNM-xEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_qvCSMc-xEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_quvXQM-xEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qvCSMs-xEeKO_rl5MA6s9A" points="[-9, -7, 64, 55]$[-72, -52, 1, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qvLcIM-xEeKO_rl5MA6s9A" id="(0.3,0.12727272727272726)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qvLcIc-xEeKO_rl5MA6s9A" id="(0.53,0.803921568627451)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_yiMFcM-xEeKO_rl5MA6s9A" type="4002" source="_t0dLAM-xEeKO_rl5MA6s9A" target="_uI4_YM-wEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_yiVPYM-xEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yiVPYc-xEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_yiMFcc-xEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_yiCUcM-xEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yiMFcs-xEeKO_rl5MA6s9A" points="[14, -19, -58, 90]$[74, -78, 2, 31]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zKW4sM-xEeKO_rl5MA6s9A" type="4002" source="_u7RpIM-xEeKO_rl5MA6s9A" target="_uI4_YM-wEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zKW4s8-xEeKO_rl5MA6s9A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zKW4tM-xEeKO_rl5MA6s9A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_zKW4sc-xEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_zKNHsM-xEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zKW4ss-xEeKO_rl5MA6s9A" points="[-10, -8, 86, 71]$[-99, -68, -3, 11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zKgpsM-xEeKO_rl5MA6s9A" id="(0.29,0.21052631578947367)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zKgpsc-xEeKO_rl5MA6s9A" id="(0.46,0.819672131147541)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_aw8BUM-yEeKO_rl5MA6s9A" type="4001" source="_zRZxUM-wEeKO_rl5MA6s9A" target="_SaLKsM-yEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aw8BU8-yEeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aw8BVM-yEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aw8BVc-yEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aw8BVs-yEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aw8BV8-yEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aw8BWM-yEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aw8BWc-yEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aw8BWs-yEeKO_rl5MA6s9A" x="-46" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aw8BW8-yEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aw8BXM-yEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aw8BXc-yEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aw8BXs-yEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aw8BUc-yEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_awpGYM-yEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aw8BUs-yEeKO_rl5MA6s9A" points="[7, -5, -111, 0]$[117, -6, -1, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_axFLQM-yEeKO_rl5MA6s9A" id="(0.93,0.43137254901960786)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_axFLQc-yEeKO_rl5MA6s9A" id="(0.008547008547008548,0.3617021276595745)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_mkIikM-yEeKO_rl5MA6s9A" type="4001" source="_SaLKsM-yEeKO_rl5MA6s9A" target="_Uz6pQM-yEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_mkIik8-yEeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mkIilM-yEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mkIilc-yEeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mkIils-yEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mkIil8-yEeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mkIimM-yEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mkIimc-yEeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mkIims-yEeKO_rl5MA6s9A" x="-16" y="33"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mkIim8-yEeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mkIinM-yEeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mkIinc-yEeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mkIins-yEeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_mkIikc-yEeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_mjiFoM-yEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mkIiks-yEeKO_rl5MA6s9A" points="[3, 9, -29, -76]$[29, 82, -3, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mkRsgM-yEeKO_rl5MA6s9A" id="(0.6068376068376068,0.8085106382978723)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mkRsgc-yEeKO_rl5MA6s9A" id="(0.1984126984126984,0.03)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rmU_MM-0EeKO_rl5MA6s9A" type="4001" source="_uI4_YM-wEeKO_rl5MA6s9A" target="_kfEooM-0EeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rmU_M8-0EeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rmU_NM-0EeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rmU_Nc-0EeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rmU_Ns-0EeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rmU_N8-0EeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rmU_OM-0EeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rmU_Oc-0EeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rmU_Os-0EeKO_rl5MA6s9A" x="-19" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rmU_O8-0EeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rmU_PM-0EeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rmU_Pc-0EeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rmU_Ps-0EeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rmU_Mc-0EeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_rmCEQM-0EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rmU_Ms-0EeKO_rl5MA6s9A" points="[5, -1, -89, 14]$[91, -16, -3, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rmewMM-0EeKO_rl5MA6s9A" id="(0.95,0.14754098360655737)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rmewMc-0EeKO_rl5MA6s9A" id="(0.03,0.36)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_seJYAM-0EeKO_rl5MA6s9A" type="4001" source="_uI4_YM-wEeKO_rl5MA6s9A" target="_l5OScM-0EeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_seJYA8-0EeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_seJYBM-0EeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_seJYBc-0EeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_seTJAM-0EeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_seTJAc-0EeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_seTJAs-0EeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_seTJA8-0EeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_seTJBM-0EeKO_rl5MA6s9A" x="-44" y="22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_seTJBc-0EeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_seTJBs-0EeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_seTJB8-0EeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_seTJCM-0EeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_seJYAc-0EeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_sd2dEM-0EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_seJYAs-0EeKO_rl5MA6s9A" points="[5, 1, -90, -22]$[91, 22, -4, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_secS8M-0EeKO_rl5MA6s9A" id="(0.95,0.7049180327868853)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_secS8c-0EeKO_rl5MA6s9A" id="(0.04,0.35294117647058826)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OF2xoM-5EeKO_rl5MA6s9A" type="4001" source="_l5OScM-0EeKO_rl5MA6s9A" target="_Uz6pQM-yEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OF2xo8-5EeKO_rl5MA6s9A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OF2xpM-5EeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OF2xpc-5EeKO_rl5MA6s9A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OF2xps-5EeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OF2xp8-5EeKO_rl5MA6s9A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OF2xqM-5EeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OF2xqc-5EeKO_rl5MA6s9A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OF2xqs-5EeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OF2xq8-5EeKO_rl5MA6s9A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OF2xrM-5EeKO_rl5MA6s9A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OF2xrc-5EeKO_rl5MA6s9A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OF2xrs-5EeKO_rl5MA6s9A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OF2xoc-5EeKO_rl5MA6s9A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_OFj2sM-5EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OF2xos-5EeKO_rl5MA6s9A" points="[0, 9, 313, -186]$[0, 195, 313, 0]$[-308, 195, 5, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OGAioM-5EeKO_rl5MA6s9A" id="(0.56,0.8235294117647058)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OGAioc-5EeKO_rl5MA6s9A" id="(0.9603174603174603,0.639344262295082)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JmkXINIPEeKovM8ingMMQQ" type="4001" source="_sae80M-wEeKO_rl5MA6s9A" target="_q3ZZcM-wEeKO_rl5MA6s9A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JmqdwNIPEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JmqdwdIPEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JmqdwtIPEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jmqdw9IPEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JmqdxNIPEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JmqdxdIPEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JmqdxtIPEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jmqdx9IPEeKovM8ingMMQQ" x="-20" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JmqdyNIPEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JmqdydIPEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JmqdytIPEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jmqdy9IPEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JmkXIdIPEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_JlCtINIPEeKovM8ingMMQQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JmkXItIPEeKovM8ingMMQQ" points="[0, -4, -144, 99]$[0, -103, -144, 0]$[136, -103, -8, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Jm8xoNIPEeKovM8ingMMQQ" id="(0.2047244094488189,0.07272727272727272)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Jm8xodIPEeKovM8ingMMQQ" id="(0.07692307692307693,0.515625)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_idQj4NIPEeKovM8ingMMQQ" type="PapyrusUMLClassDiagram" name="Layer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_jH8foNIPEeKovM8ingMMQQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jICmQNIPEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jICmQdIPEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jICmQtIPEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jICmQ9IPEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jICmRNIPEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jICmRdIPEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jICmRtIPEeKovM8ingMMQQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jICmR9IPEeKovM8ingMMQQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jICmSNIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jICmSdIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jICmStIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jICmS9IPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jICmTNIPEeKovM8ingMMQQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_AaCaENeJEeKpd73UUMObaQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A9OxQNeKEeKpd73UUMObaQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DPGtQNeKEeKpd73UUMObaQ" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_AYzD8NeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AaCaEdeJEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ssnXwNeJEeKpd73UUMObaQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A9OxRNeKEeKpd73UUMObaQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DPGtQteKEeKpd73UUMObaQ" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_aJy80NeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ssnXwdeJEeKpd73UUMObaQ" x="64" y="57"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ssteYNeJEeKpd73UUMObaQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A9OxRteKEeKpd73UUMObaQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DPGtQ9eKEeKpd73UUMObaQ" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_aou7kNeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ssteYdeJEeKpd73UUMObaQ" x="64" y="57"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5Q3igNeJEeKpd73UUMObaQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A9OxSNeKEeKpd73UUMObaQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DPGtRNeKEeKpd73UUMObaQ" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_urYKgNeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5Q3igdeJEeKpd73UUMObaQ" x="73" y="138"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5Q9pINeJEeKpd73UUMObaQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A9OxQteKEeKpd73UUMObaQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DPGtQdeKEeKpd73UUMObaQ" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_urhUcNeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5Q9pIdeJEeKpd73UUMObaQ" x="73" y="138"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5Q9pIteJEeKpd73UUMObaQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A9U34NeKEeKpd73UUMObaQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DPGtRdeKEeKpd73UUMObaQ" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_uropMNeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5RDvwNeJEeKpd73UUMObaQ" x="73" y="138"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jICmTdIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jICmTtIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jICmT9IPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jICmUNIPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jICmUdIPEeKovM8ingMMQQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jICmUtIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jICmU9IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jICmVNIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jICmVdIPEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_uIcTcM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jH8fodIPEeKovM8ingMMQQ" x="174" y="6" width="322" height="535"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_j6mEkNIPEeKovM8ingMMQQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j6sLMNIPEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j6sLMdIPEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j6sLMtIPEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j6sLM9IPEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j6sLNNIPEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j6sLNdIPEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_j6sLNtIPEeKovM8ingMMQQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_j6sLN9IPEeKovM8ingMMQQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_j6sLONIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_j6sLOdIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_j6sLOtIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_j6sLO9IPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_j6sLPNIPEeKovM8ingMMQQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_j6sLPdIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_j6sLPtIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_j6sLP9IPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_j6sLQNIPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_j6sLQdIPEeKovM8ingMMQQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_j6sLQtIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_j6sLQ9IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_j6sLRNIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_j6sLRdIPEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_kextsM-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_j6mEkdIPEeKovM8ingMMQQ" x="670" y="5"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ke0L8NIPEeKovM8ingMMQQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ke6SkNIPEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ke6SkdIPEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ke6SktIPEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ke6Sk9IPEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ke6SlNIPEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ke6SldIPEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ke6SltIPEeKovM8ingMMQQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ke6Sl9IPEeKovM8ingMMQQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ke6SmNIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ke6SmdIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ke6SmtIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ke6Sm9IPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ke6SnNIPEeKovM8ingMMQQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ke6SndIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ke6SntIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ke6Sn9IPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ke6SoNIPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ke6SodIPEeKovM8ingMMQQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ke6SotIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ke6So9IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ke6SpNIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ke6SpdIPEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_l4yNkM-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ke0L8dIPEeKovM8ingMMQQ" x="672" y="168"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_u2yFUNIPEeKovM8ingMMQQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u2yFUtIPEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u2yFU9IPEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u2yFVNIPEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u2yFVdIPEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u2yFVtIPEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u2yFV9IPEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_u2yFWNIPEeKovM8ingMMQQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_u2yFWdIPEeKovM8ingMMQQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_xNZXYNIPEeKovM8ingMMQQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="architecture-v3.uml#_xNNKINIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xNZXYdIPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_C88iUNIQEeKovM8ingMMQQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="architecture-v3.uml#_C8tRwNIQEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_C88iUdIQEeKovM8ingMMQQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_u2yFWtIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_u2yFW9IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_u2yFXNIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u2yFXdIPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_u2yFXtIPEeKovM8ingMMQQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_u2yFX9IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_u2yFYNIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_u2yFYdIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u2yFYtIPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_u24L8NIPEeKovM8ingMMQQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_u24L8dIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_u24L8tIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_u24L89IPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u24L9NIPEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_UzekYM-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u2yFUdIPEeKovM8ingMMQQ" x="672" y="318" height="157"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_idQj4dIPEeKovM8ingMMQQ"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KxbdELZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_j6-fENIPEeKovM8ingMMQQ" type="4001" source="_jH8foNIPEeKovM8ingMMQQ" target="_j6mEkNIPEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_j6-fE9IPEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_j6-fFNIPEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_j6-fFdIPEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_j6-fFtIPEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_j6-fF9IPEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_j6-fGNIPEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_j6-fGdIPEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_j6-fGtIPEeKovM8ingMMQQ" x="-17" y="21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_j6-fG9IPEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_j6-fHNIPEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_j6-fHdIPEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_j6-fHtIPEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_j6-fEdIPEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_rmCEQM-0EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_j6-fEtIPEeKovM8ingMMQQ" points="[-50, -36, 222, 155]$[-272, -191, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nK6l0NIPEeKovM8ingMMQQ" id="(0.976,0.08411214953271028)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kfAZMNIPEeKovM8ingMMQQ" type="4001" source="_jH8foNIPEeKovM8ingMMQQ" target="_ke0L8NIPEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kfGf0NIPEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kfGf0dIPEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kfGf0tIPEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kfGf09IPEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kfGf1NIPEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kfGf1dIPEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kfGf1tIPEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kfGf19IPEeKovM8ingMMQQ" x="-44" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kfGf2NIPEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kfGf2dIPEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kfGf2tIPEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kfGf29IPEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kfAZMdIPEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_sd2dEM-0EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kfAZMtIPEeKovM8ingMMQQ" points="[-50, -36, 222, 155]$[-272, -191, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n2qRgNIPEeKovM8ingMMQQ" id="(0.984,0.40373831775700936)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_PY4ekNIQEeKovM8ingMMQQ" type="4001" source="_jH8foNIPEeKovM8ingMMQQ" target="_u2yFUNIPEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PY4ek9IQEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PY4elNIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PY4eldIQEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PY4eltIQEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PY4el9IQEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PY4emNIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PY4emdIQEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PY4emtIQEeKovM8ingMMQQ" x="-54" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PY4em9IQEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PY4enNIQEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PY4endIQEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PY4entIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_PY4ekdIQEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_PYgEENIQEeKovM8ingMMQQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PY4ektIQEeKovM8ingMMQQ" points="[8, 0, -183, 0]$[184, -3, -7, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PZF58NIQEeKovM8ingMMQQ" id="(0.96,0.6336448598130842)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PZF58dIQEeKovM8ingMMQQ" id="(0.015037593984962405,0.1553398058252427)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_axq7wNIQEeKovM8ingMMQQ" type="4001" source="_ke0L8NIPEeKovM8ingMMQQ" target="_u2yFUNIPEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_axsJ4NIQEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_axsJ4dIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_axsJ4tIQEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_axsJ49IQEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_axsJ5NIQEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_axsw8NIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_axsw8dIQEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_axsw8tIQEeKovM8ingMMQQ" x="1" y="-56"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_axsw89IQEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_axsw9NIQEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_axtYANIQEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_axtYAdIQEeKovM8ingMMQQ" x="-10" y="32"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_axq7wdIQEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_OFj2sM-5EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_axq7wtIQEeKovM8ingMMQQ" points="[5, 50, -11, -101]$[10, 100, -6, -51]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3yXq0NIQEeKovM8ingMMQQ" type="4001" source="_jH8foNIPEeKovM8ingMMQQ" target="_u2yFUNIPEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3yXq09IQEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3yXq1NIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3yXq1dIQEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3ydxcNIQEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3ydxcdIQEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3ydxctIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3ydxc9IQEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3ydxdNIQEeKovM8ingMMQQ" x="-34" y="21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3ydxddIQEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3ydxdtIQEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3ydxd9IQEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3ydxeNIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3yXq0dIQEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_3yFW8NIQEeKovM8ingMMQQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3yXq0tIQEeKovM8ingMMQQ" points="[5, 2, -176, 0]$[181, 2, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3yj4ENIQEeKovM8ingMMQQ" id="(0.94,0.7514018691588785)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3yj4EdIQEeKovM8ingMMQQ" id="(0.0,0.6213592233009708)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__9WvQNIQEeKovM8ingMMQQ" type="4001" source="_jH8foNIPEeKovM8ingMMQQ" target="_u2yFUNIPEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="__9X9YNIQEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__9X9YdIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__9X9YtIQEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__9X9Y9IQEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__9X9ZNIQEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__9X9ZdIQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__9X9ZtIQEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__9X9Z9IQEeKovM8ingMMQQ" x="-28" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__9X9aNIQEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__9X9adIQEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__9X9atIQEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__9X9a9IQEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__9WvQdIQEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#__8-UwNIQEeKovM8ingMMQQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__9WvQtIQEeKovM8ingMMQQ" points="[5, 3, -200, 0]$[193, 20, -12, 17]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__9eEANIQEeKovM8ingMMQQ" id="(0.98,0.8392523364485981)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__9eEAdIQEeKovM8ingMMQQ" id="(0.18045112781954886,0.89171974522293)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_6iyZcNIPEeKovM8ingMMQQ" type="PapyrusUMLClassDiagram" name="datatypes" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_70xlwNIPEeKovM8ingMMQQ" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_70xlwtIPEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_70xlw9IPEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_70xlxNIPEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_70xlxdIPEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_70xlxtIPEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_70xlx9IPEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_70xlyNIPEeKovM8ingMMQQ" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_70xlydIPEeKovM8ingMMQQ" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_70xlytIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_70xly9IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_70xlzNIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_70xlzdIPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_70xlztIPEeKovM8ingMMQQ" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_70xlz9IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_70xl0NIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_70xl0dIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_70xl0tIPEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="architecture-v3.uml#_70TEoNIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_70xlwdIPEeKovM8ingMMQQ" x="84" y="66"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9K5EINIPEeKovM8ingMMQQ" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9K5EItIPEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9K5EI9IPEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9K5EJNIPEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9K5EJdIPEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9K5EJtIPEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9K5EJ9IPEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9K5EKNIPEeKovM8ingMMQQ" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9K5EKdIPEeKovM8ingMMQQ" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9K5EKtIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9K5EK9IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9K5ELNIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9K5ELdIPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9K_KwNIPEeKovM8ingMMQQ" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9K_KwdIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9K_KwtIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9K_Kw9IPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9K_KxNIPEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="architecture-v3.uml#_9KgpoNIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9K5EIdIPEeKovM8ingMMQQ" x="84" y="180"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-D6W0NIPEeKovM8ingMMQQ" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-D6W0tIPEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-D6W09IPEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-D6W1NIPEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-D6W1dIPEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-D6W1tIPEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-D6W19IPEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-D6W2NIPEeKovM8ingMMQQ" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-D6W2dIPEeKovM8ingMMQQ" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-D6W2tIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-D6W29IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-D6W3NIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-D6W3dIPEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-D6W3tIPEeKovM8ingMMQQ" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-D6W39IPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-D6W4NIPEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-D6W4dIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-D6W4tIPEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="architecture-v3.uml#_-DoC8NIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-D6W0dIPEeKovM8ingMMQQ" x="246" y="66"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GifssNIQEeKovM8ingMMQQ" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GifsstIQEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gifss9IQEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GifstNIQEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GifstdIQEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GifsttIQEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gifst9IQEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GifsuNIQEeKovM8ingMMQQ" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GifsudIQEeKovM8ingMMQQ" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GifsutIQEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Gifsu9IQEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GifsvNIQEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GifsvdIQEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GifsvtIQEeKovM8ingMMQQ" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Gifsv9IQEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GifswNIQEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GifswdIQEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GifswtIQEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="architecture-v3.uml#_GiHSMNIQEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GifssdIQEeKovM8ingMMQQ" x="444" y="66"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NwkWUNeJEeKpd73UUMObaQ" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NwkWUteJEeKpd73UUMObaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NwkWU9eJEeKpd73UUMObaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NwkWVNeJEeKpd73UUMObaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NwkWVdeJEeKpd73UUMObaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NwkWVteJEeKpd73UUMObaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NwkWV9eJEeKpd73UUMObaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NwkWWNeJEeKpd73UUMObaQ" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NwkWWdeJEeKpd73UUMObaQ" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NwkWWteJEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NwkWW9eJEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NwkWXNeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NwkWXdeJEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NwkWXteJEeKpd73UUMObaQ" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NwkWX9eJEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NwkWYNeJEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NwkWYdeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NwkWYteJEeKpd73UUMObaQ"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="architecture-v3.uml#_NwL70NeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NwkWUdeJEeKpd73UUMObaQ" x="333" y="203"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_6iyZcdIPEeKovM8ingMMQQ"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_4GLNENIPEeKovM8ingMMQQ"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_g9wjMNITEeKovM8ingMMQQ" type="PapyrusUMLClassDiagram" name="LayerExpression m()" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_iSAZUNITEeKovM8ingMMQQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iSAZUtITEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iSAZU9ITEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iSAZVNITEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iSAZVdITEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iSAZVtITEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iSAZV9ITEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iSAZWNITEeKovM8ingMMQQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iSAZWdITEeKovM8ingMMQQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iSAZWtITEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iSAZW9ITEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iSAZXNITEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iSAZXdITEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iSAZXtITEeKovM8ingMMQQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="__lBAYNITEeKovM8ingMMQQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__6UQENIVEeKovM8ingMMQQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GWK5MNIWEeKovM8ingMMQQ" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#__kusgNITEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__lBAYdITEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CEs5cNIVEeKovM8ingMMQQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__6UQEtIVEeKovM8ingMMQQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GWQ_0NIWEeKovM8ingMMQQ" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_8L56ENIUEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CEs5cdIVEeKovM8ingMMQQ" x="78" y="52"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aXw0sNIVEeKovM8ingMMQQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__6UQFNIVEeKovM8ingMMQQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GWQ_0dIWEeKovM8ingMMQQ" key="CustomAppearance_MaskValue" value="21258"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_LDqYgNIVEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aXw0sdIVEeKovM8ingMMQQ" x="42" y="65"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iSAZX9ITEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iSAZYNITEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iSAZYdITEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iSAZYtITEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iSAZY9ITEeKovM8ingMMQQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iSAZZNITEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iSAZZdITEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iSAZZtITEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iSAZZ9ITEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_q3GegM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iSAZUdITEeKovM8ingMMQQ" x="168" y="102" width="445" height="223"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_k6gsoNITEeKovM8ingMMQQ" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k6gsotITEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k6gso9ITEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k6gspNITEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k6gspdITEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k6gsptITEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k6gsp9ITEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_k6gsqNITEeKovM8ingMMQQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_k5v3oNITEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k6gsodITEeKovM8ingMMQQ" x="12" y="24"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nf1owNIWEeKovM8ingMMQQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nf2P0NIWEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nf2P0dIWEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nf2P0tIWEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nf2P09IWEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nf224NIWEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nf224dIWEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nf224tIWEeKovM8ingMMQQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nf2249IWEeKovM8ingMMQQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nf225NIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nf225dIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nf225tIWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nf2259IWEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nf226NIWEeKovM8ingMMQQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nf226dIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nf226tIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nf2269IWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nf227NIWEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nf3d8NIWEeKovM8ingMMQQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nf3d8dIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nf3d8tIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nf3d89IWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nf3d9NIWEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_uIcTcM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nf1owdIWEeKovM8ingMMQQ" x="198" y="648" width="415" height="361"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_thQYoNIWEeKovM8ingMMQQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_thQYotIWEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_thQYo9IWEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_thQYpNIWEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_thQYpdIWEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_thQYptIWEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_thQYp9IWEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_thQYqNIWEeKovM8ingMMQQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_thQYqdIWEeKovM8ingMMQQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_thQYqtIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_thQYq9IWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_thQYrNIWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_thQYrdIWEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_thQYrtIWEeKovM8ingMMQQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_thQYr9IWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_thQYsNIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_thQYsdIWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_thQYstIWEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_thQYs9IWEeKovM8ingMMQQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_thQYtNIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_thQYtdIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_thQYttIWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_thQYt9IWEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_kextsM-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_thQYodIWEeKovM8ingMMQQ" x="816" y="576" height="160"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uES0QNIWEeKovM8ingMMQQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uES0QtIWEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uES0Q9IWEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uES0RNIWEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uES0RdIWEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uES0RtIWEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uES0R9IWEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uES0SNIWEeKovM8ingMMQQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uES0SdIWEeKovM8ingMMQQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uES0StIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uES0S9IWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uES0TNIWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uES0TdIWEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uES0TtIWEeKovM8ingMMQQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uES0T9IWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uES0UNIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uES0UdIWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uES0UtIWEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uES0U9IWEeKovM8ingMMQQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_uES0VNIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uES0VdIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uES0VtIWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uES0V9IWEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_l4yNkM-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uES0QdIWEeKovM8ingMMQQ" x="804" y="906"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vQqgwNIWEeKovM8ingMMQQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vQqgwtIWEeKovM8ingMMQQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vQqgw9IWEeKovM8ingMMQQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vQqgxNIWEeKovM8ingMMQQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vQqgxdIWEeKovM8ingMMQQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vQqgxtIWEeKovM8ingMMQQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vQqgx9IWEeKovM8ingMMQQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vQqgyNIWEeKovM8ingMMQQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vQqgydIWEeKovM8ingMMQQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vQqgytIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vQqgy9IWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vQqgzNIWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vQqgzdIWEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vQwnYNIWEeKovM8ingMMQQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vQwnYdIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vQwnYtIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vQwnY9IWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vQwnZNIWEeKovM8ingMMQQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vQwnZdIWEeKovM8ingMMQQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vQwnZtIWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vQwnZ9IWEeKovM8ingMMQQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vQwnaNIWEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vQwnadIWEeKovM8ingMMQQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_UzekYM-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vQqgwdIWEeKovM8ingMMQQ" x="804" y="162" height="262"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_g9wjMdITEeKovM8ingMMQQ"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KxbdELZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ngDEINIWEeKovM8ingMMQQ" type="4002" source="_nf1owNIWEeKovM8ingMMQQ" target="_iSAZUNITEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ngDrMNIWEeKovM8ingMMQQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ngDrMdIWEeKovM8ingMMQQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ngDEIdIWEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_x2M-oM-wEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ngDEItIWEeKovM8ingMMQQ" points="[0, 0, -390, -203]$[196, 102, -194, -101]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qEGf0NIXEeKovM8ingMMQQ" id="(0.5483146067415731,0.9801980198019802)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_thisgNIWEeKovM8ingMMQQ" type="4001" source="_nf1owNIWEeKovM8ingMMQQ" target="_thQYoNIWEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_thisg9IWEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_thishNIWEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_thishdIWEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_thishtIWEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_thish9IWEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_thisiNIWEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_thisidIWEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_thisitIWEeKovM8ingMMQQ" x="-10" y="21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_thisi9IWEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_thisjNIWEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_thisjdIWEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_thisjtIWEeKovM8ingMMQQ" x="-1" y="-21"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_thisgdIWEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_rmCEQM-0EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_thisgtIWEeKovM8ingMMQQ" points="[-29, -50, 376, 648]$[-405, -698, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iqbuINIYEeKovM8ingMMQQ" id="(0.980722891566265,0.12188365650969529)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k7gY4NIYEeKovM8ingMMQQ" id="(0.03,0.69375)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uEfBgNIWEeKovM8ingMMQQ" type="4001" source="_nf1owNIWEeKovM8ingMMQQ" target="_uES0QNIWEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uElIINIWEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uElIIdIWEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uElIItIWEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uElII9IWEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uElIJNIWEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uElIJdIWEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uElIJtIWEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uElIJ9IWEeKovM8ingMMQQ" x="-35" y="26"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uElIKNIWEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uElIKdIWEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uElIKtIWEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uElIK9IWEeKovM8ingMMQQ" x="5" y="-22"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uEfBgdIWEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_sd2dEM-0EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uEfBgtIWEeKovM8ingMMQQ" points="[-29, -50, 376, 648]$[-405, -698, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A9aPUNIXEeKovM8ingMMQQ" id="(0.9734939759036144,0.8559556786703602)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_vQ2uANIWEeKovM8ingMMQQ" type="4001" source="_uES0QNIWEeKovM8ingMMQQ" target="_vQqgwNIWEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vQ2uA9IWEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vQ2uBNIWEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vQ2uBdIWEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vQ2uBtIWEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vQ2uB9IWEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vQ2uCNIWEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vQ2uCdIWEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vQ2uCtIWEeKovM8ingMMQQ" x="65" y="-5"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vQ2uC9IWEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vQ2uDNIWEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vQ2uDdIWEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vQ2uDtIWEeKovM8ingMMQQ" x="5" y="-35"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_vQ2uAdIWEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_OFj2sM-5EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vQ2uAtIWEeKovM8ingMMQQ" points="[50, -8, 37, 625]$[148, -8, 135, 625]$[148, -626, 135, 7]$[76, -626, 63, 7]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_yspfcNIWEeKovM8ingMMQQ" type="4001" source="_iSAZUNITEeKovM8ingMMQQ" target="_vQqgwNIWEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ysvmENIWEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ysvmEdIWEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ysvmEtIWEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ysvmE9IWEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ysvmFNIWEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ysvmFdIWEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ysvmFtIWEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ysvmF9IWEeKovM8ingMMQQ" x="-40" y="14"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ysvmGNIWEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ysvmGdIWEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ysvmGtIWEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ysvmG9IWEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_yspfcdIWEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_3yFW8NIQEeKovM8ingMMQQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yspfctIWEeKovM8ingMMQQ" points="[55, -50, -245, 220]$[244, -220, -56, 50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AVTGcNIXEeKovM8ingMMQQ" id="(0.9932584269662922,0.4304932735426009)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M5IacNIXEeKovM8ingMMQQ" id="(0.15079365079365079,0.12376237623762376)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_unpjgNIXEeKovM8ingMMQQ" type="4001" source="_iSAZUNITEeKovM8ingMMQQ" target="_thQYoNIWEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_unpjg9IXEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_unpjhNIXEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_unpjhdIXEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_unpjhtIXEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_unpjh9IXEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_unpjiNIXEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_unvqINIXEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_unvqIdIXEeKovM8ingMMQQ" x="37" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_unvqItIXEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_unvqI9IXEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_unvqJNIXEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_unvqJdIXEeKovM8ingMMQQ" x="49" y="-14"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_unpjgdIXEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_unRJANIXEeKovM8ingMMQQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_unpjgtIXEeKovM8ingMMQQ" points="[8, 0, -212, -276]$[85, 0, -135, -276]$[85, 284, -135, 8]$[211, 284, -9, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_un1wwNIXEeKovM8ingMMQQ" id="(0.9820224719101124,0.9603960396039604)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_un1wwdIXEeKovM8ingMMQQ" id="(0.09,0.1)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_d40j0NIZEeKovM8ingMMQQ" type="4001" source="_iSAZUNITEeKovM8ingMMQQ" target="_vQqgwNIWEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_d40j09IZEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_d40j1NIZEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d40j1dIZEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_d40j1tIZEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d40j19IZEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_d40j2NIZEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d40j2dIZEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_d40j2tIZEeKovM8ingMMQQ" x="-33" y="12"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d40j29IZEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_d46qcNIZEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d46qcdIZEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_d46qctIZEeKovM8ingMMQQ" x="-1" y="-12"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_d40j0dIZEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_PYgEENIQEeKovM8ingMMQQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_d40j0tIZEeKovM8ingMMQQ" points="[156, -180, -306, 355]$[399, -462, -63, 73]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hVHEgNIZEeKovM8ingMMQQ" id="(0.952808988764045,0.6547085201793722)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_h1OvANIZEeKovM8ingMMQQ" id="(0.1349206349206349,0.31297709923664124)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_fRQWYNIZEeKovM8ingMMQQ" type="4001" source="_nf1owNIWEeKovM8ingMMQQ" target="_vQqgwNIWEeKovM8ingMMQQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_fRcjoNIZEeKovM8ingMMQQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fRcjodIZEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fRcjotIZEeKovM8ingMMQQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fRcjo9IZEeKovM8ingMMQQ" x="28" y="76"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fRcjpNIZEeKovM8ingMMQQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fRcjpdIZEeKovM8ingMMQQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fRcjptIZEeKovM8ingMMQQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fRcjp9IZEeKovM8ingMMQQ" y="51"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fRcjqNIZEeKovM8ingMMQQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fRcjqdIZEeKovM8ingMMQQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fRcjqtIZEeKovM8ingMMQQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fRcjq9IZEeKovM8ingMMQQ" x="30" y="30"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_fRQWYdIZEeKovM8ingMMQQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#__8-UwNIQEeKovM8ingMMQQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fRQWYtIZEeKovM8ingMMQQ" points="[11, 0, -254, 365]$[142, 0, -123, 365]$[142, -358, -123, 7]$[202, -358, -63, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qZLtENIZEeKovM8ingMMQQ" id="(0.9734939759036144,0.027700831024930747)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_EvbecNLSEeKwWoA8j13SIg" type="PapyrusUMLClassDiagram" name="oneListener" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_FqVAcNLSEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FqVActLSEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FqVAc9LSEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FqbHENLSEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FqbHEdLSEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FqbHEtLSEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FqbHE9LSEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FqbHFNLSEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FqbHFdLSEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FqbHFtLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FqbHF9LSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FqbHGNLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FqbHGdLSEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FqbHGtLSEeKwWoA8j13SIg" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_aLsWQNLTEeKwWoA8j13SIg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#___ERUNLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aLsWQdLTEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aLsWQtLTEeKwWoA8j13SIg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_OXuY8NLTEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aLsWQ9LTEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aLsWRNLTEeKwWoA8j13SIg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_c-YVwNLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aLsWRdLTEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_f8tSoNLTEeKwWoA8j13SIg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_dAOTYNLTEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f8tSodLTEeKwWoA8j13SIg" x="70" y="66"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FqbHG9LSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FqbHHNLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FqbHHdLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FqbHHtLSEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FqbHH9LSEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FqbHINLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FqbHIdLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FqbHItLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FqbHI9LSEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_FpeE0NLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FqVAcdLSEeKwWoA8j13SIg" x="48" y="192"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_MF58wNLSEeKwWoA8j13SIg" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MF6j0NLSEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MF6j0dLSEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MF7K4NLSEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MF7K4dLSEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MF7K4tLSEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MF7K49LSEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MF7K5NLSEeKwWoA8j13SIg" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MF7K5dLSEeKwWoA8j13SIg" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MF7K5tLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MF7K59LSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MF7K6NLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MF7K6dLSEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MF7x8NLSEeKwWoA8j13SIg" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_-M6XMNLSEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_7UNrwNLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-M6XMdLSEeKwWoA8j13SIg" x="95" y="5"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lHhKoNLTEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_hnQI4NLTEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lHhKodLTEeKwWoA8j13SIg" x="68" y="28"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MF7x8dLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MF7x8tLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MF7x89LSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MF7x9NLSEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_MF7x9dLSEeKwWoA8j13SIg" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_MF7x9tLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_MF7x99LSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_MF7x-NLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MF7x-dLSEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_MFiwYNLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MF58wdLSEeKwWoA8j13SIg" x="306" y="12"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TqP38NLSEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TqP38tLSEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TqV-kNLSEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TqV-kdLSEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TqV-ktLSEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TqV-k9LSEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TqV-lNLSEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TqV-ldLSEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TqV-ltLSEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TqV-l9LSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TqV-mNLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TqV-mdLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TqV-mtLSEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TqV-m9LSEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TqV-nNLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TqV-ndLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TqV-ntLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TqV-n9LSEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TqV-oNLSEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TqV-odLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TqV-otLSEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TqV-o9LSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TqV-pNLSEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_TqDqsNLSEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TqP38dLSEeKwWoA8j13SIg" x="510" y="192" width="128"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1RgtANLTEeKwWoA8j13SIg" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1RgtAtLTEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1RgtA9LTEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1RgtBNLTEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1RgtBdLTEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1RgtBtLTEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1RgtB9LTEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1RgtCNLTEeKwWoA8j13SIg" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_1Q1-oNLTEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1RgtAdLTEeKwWoA8j13SIg" x="564" y="324"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_EvbecdLSEeKwWoA8j13SIg"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_93lc4NLREeKwWoA8j13SIg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_qQ-0QNLSEeKwWoA8j13SIg" type="4001" source="_FqVAcNLSEeKwWoA8j13SIg" target="_MF58wNLSEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qQ-0Q9LSEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qQ-0RNLSEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qQ-0RdLSEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qQ-0RtLSEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qQ-0R9LSEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qQ-0SNLSEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qRE64NLSEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qRE64dLSEeKwWoA8j13SIg" x="-26" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qRE64tLSEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qRE649LSEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qRE65NLSEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qRE65dLSEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_qQ-0QdLSEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_qQmZwNLSEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qQ-0QtLSEeKwWoA8j13SIg" points="[0, -3, -172, 128]$[0, -131, -172, 0]$[159, -131, -13, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qRRIINLSEeKwWoA8j13SIg" id="(0.24815724815724816,0.06707317073170732)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qRRIIdLSEeKwWoA8j13SIg" id="(0.08024691358024691,0.46017699115044247)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_vmTdsNLTEeKwWoA8j13SIg" type="4008" source="_FqVAcNLSEeKwWoA8j13SIg" target="_TqP38NLSEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vmTds9LTEeKwWoA8j13SIg" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vmZkUNLTEeKwWoA8j13SIg" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vmZkUdLTEeKwWoA8j13SIg" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vmZkUtLTEeKwWoA8j13SIg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_vmTdsdLTEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Dependency" href="architecture-v3.uml#_vlovUNLTEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vmTdstLTEeKwWoA8j13SIg" points="[11, -6, -65, 0]$[66, -7, -10, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vmfq8NLTEeKwWoA8j13SIg" id="(0.972972972972973,0.31097560975609756)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vmfq8dLTEeKwWoA8j13SIg" id="(0.078125,0.45)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_wTabUNLTEeKwWoA8j13SIg" type="4008" source="_MF58wNLSEeKwWoA8j13SIg" target="_TqP38NLSEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wTabU9LTEeKwWoA8j13SIg" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wTabVNLTEeKwWoA8j13SIg" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wTabVdLTEeKwWoA8j13SIg" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wTabVtLTEeKwWoA8j13SIg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_wTabUdLTEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Dependency" href="architecture-v3.uml#_wSvs8NLTEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wTabUtLTEeKwWoA8j13SIg" points="[3, 8, -25, -51]$[13, 44, -15, -15]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wTgh8NLTEeKwWoA8j13SIg" id="(0.911504424778761,0.9444444444444444)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wTgh8dLTEeKwWoA8j13SIg" id="(0.234375,0.15)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_-hv_gNNmEeKwWoA8j13SIg" type="PapyrusUMLClassDiagram" name="Service" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_BZJqcNNnEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BZJqctNnEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BZJqc9NnEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BZJqdNNnEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BZJqddNnEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BZJqdtNnEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BZJqd9NnEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BZJqeNNnEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BZJqedNnEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BZJqetNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BZJqe9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BZJqfNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BZJqfdNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BZJqftNnEeKwWoA8j13SIg" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_86teUNNoEeKwWoA8j13SIg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_86bKcNNoEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_86teUdNoEeKwWoA8j13SIg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BZJqf9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BZJqgNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BZJqgdNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BZJqgtNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BZJqg9NnEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BZJqhNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BZJqhdNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BZJqhtNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BZJqh9NnEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_BY3WkNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BZJqcdNnEeKwWoA8j13SIg" x="24" y="216" width="213" height="301"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LrtfYNNnEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LrzmANNnEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LrzmAdNnEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LrzmAtNnEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LrzmA9NnEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LrzmBNNnEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LrzmBdNnEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LrzmBtNnEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LrzmB9NnEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LrzmCNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LrzmCdNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LrzmCtNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LrzmC9NnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LrzmDNNnEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LrzmDdNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LrzmDtNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LrzmD9NnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LrzmENNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LrzmEdNnEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LrzmEtNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LrzmE9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LrzmFNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LrzmFdNnEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_LrbLgNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LrtfYdNnEeKwWoA8j13SIg" x="743" y="217" width="163" height="145"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QDgmENNnEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QDmssNNnEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QDmssdNnEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QDmsstNnEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QDmss9NnEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QDmstNNnEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QDmstdNnEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QDmsttNnEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QDszUNNnEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QDszUdNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QDszUtNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QDszU9NnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QDszVNNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QDszVdNnEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QDszVtNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QDszV9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QDszWNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QDszWdNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QDszWtNnEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QDszW9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QDszXNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QDszXdNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QDszXtNnEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_rqknoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QDgmEdNnEeKwWoA8j13SIg" x="1008" y="144"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TCnbgNNnEeKwWoA8j13SIg" type="2007" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TCnbgtNnEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TCnbg9NnEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TCnbhNNnEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TCnbhdNnEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TCtiINNnEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TCtiIdNnEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TCtiItNnEeKwWoA8j13SIg" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TCtiI9NnEeKwWoA8j13SIg" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_PInZMNNpEeKwWoA8j13SIg" type="3010" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PInZMtNpEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PInZM9NpEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PInZNNNpEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PInZNdNpEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PInZNtNpEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PInZN9NpEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PInZONNpEeKwWoA8j13SIg" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PInZOdNpEeKwWoA8j13SIg" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PInZOtNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PInZO9NpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PInZPNNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PInZPdNpEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PInZPtNpEeKwWoA8j13SIg" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PInZP9NpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PInZQNNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PInZQdNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PInZQtNpEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PInZQ9NpEeKwWoA8j13SIg" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PInZRNNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PInZRdNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PInZRtNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PInZR9NpEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_3qy5UNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PInZMdNpEeKwWoA8j13SIg" x="57" y="29"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_RAaTMNNnEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RAaTMtNnEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RAaTM9NnEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RAaTNNNnEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RAaTNdNnEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RAaTNtNnEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RAaTN9NnEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RAaTONNnEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RAaTOdNnEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RAaTOtNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RAaTO9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RAaTPNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RAaTPdNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RAaTPtNnEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RAaTP9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RAaTQNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RAaTQdNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RAaTQtNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RAaTQ9NnEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RAaTRNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RAaTRdNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RAaTRtNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RAaTR9NnEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_t0NNoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RAaTMdNnEeKwWoA8j13SIg" x="655" y="13" height="121"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TCtiJNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TCtiJdNnEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KxbdELZKEeK8zaQi-hvdlw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TCnbgdNnEeKwWoA8j13SIg" x="348" y="486" width="859" height="187"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Xlp28NNpEeKwWoA8j13SIg" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xlp28tNpEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xlp289NpEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xlp29NNpEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xlp29dNpEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xlp29tNpEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xlp299NpEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Xlp2-NNpEeKwWoA8j13SIg" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Xlp2-dNpEeKwWoA8j13SIg" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Xlp2-tNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Xlp2-9NpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Xlp2_NNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xlp2_dNpEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Xlp2_tNpEeKwWoA8j13SIg" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_bdww8NNpEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_bdkjsNNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bdww8dNpEeKwWoA8j13SIg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Xlp2_9NpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Xlp3ANNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Xlp3AdNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xlp3AtNpEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Xlp3A9NpEeKwWoA8j13SIg" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Xlp3BNNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Xlp3BdNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Xlp3BtNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xlp3B9NpEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_XlXjENNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xlp28dNpEeKwWoA8j13SIg" x="30" y="36" width="245"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T7YuEEyeEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7ZVIEyeEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7ZVIUyeEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7Z8MEyeEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7Z8MUyeEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7Z8MkyeEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7Z8M0yeEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T7Z8NEyeEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7ajQEyeEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7ajQUyeEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T7ajQkyeEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T7ajQ0yeEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7ajREyeEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7ajRUyeEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7ajRkyeEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T7ajR0yeEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T7ajSEyeEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7ajSUyeEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7ajSkyeEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7ajS0yeEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T7ajTEyeEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T7ajTUyeEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7ajTkyeEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_T7VDsEyeEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7YuEUyeEeObF6ELIGKT-g" x="366" y="234" width="247"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VLl8QEyfEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VLmjUEyfEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VLnKYEyfEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VLnKYUyfEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VLnKYkyfEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VLnxcEyfEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VLnxcUyfEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VLnxckyfEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VLnxc0yfEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VLnxdEyfEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VLnxdUyfEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VLnxdkyfEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VLnxd0yfEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VLoYgEyfEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VLoYgUyfEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VLoYgkyfEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VLoYg0yfEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VLoYhEyfEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VLoYhUyfEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VLoYhkyfEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VLoYh0yfEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VLoYiEyfEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VLoYiUyfEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_z8UwcEydEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VLl8QUyfEeObF6ELIGKT-g" x="732" y="384" width="193"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_-hv_gdNmEeKwWoA8j13SIg"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_IygSQLZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_UfawsNNnEeKwWoA8j13SIg" type="4001" source="_T7YuEEyeEeObF6ELIGKT-g" target="_LrtfYNNnEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ufaws9NnEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfawtNNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UfawtdNnEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfawttNnEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ufawt9NnEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfawuNNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UfawudNnEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfawutNnEeKwWoA8j13SIg" x="-35" y="15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ufawu9NnEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfawvNNnEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UfawvdNnEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfawvtNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UfawsdNnEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_UfCWMNNnEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UfawstNnEeKwWoA8j13SIg" points="[9, -3, -126, 0]$[132, -4, -3, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ufm98NNnEeKwWoA8j13SIg" id="(0.805668016194332,0.44)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ufm98dNnEeKwWoA8j13SIg" id="(0.01935483870967742,0.42)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_VYUHkNNnEeKwWoA8j13SIg" type="4001" source="_LrtfYNNnEeKwWoA8j13SIg" target="_QDgmENNnEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VYUHk9NnEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VYUHlNNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VYUHldNnEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VYUHltNnEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VYUHl9NnEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VYUHmNNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VYUHmdNnEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VYUHmtNnEeKwWoA8j13SIg" x="-26" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VYUHm9NnEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VYUHnNNnEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VYUHndNnEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VYUHntNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_VYUHkdNnEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_VX7tENNnEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VYUHktNnEeKwWoA8j13SIg" points="[4, 3, -111, 0]$[114, 3, -1, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VYaOMNNnEeKwWoA8j13SIg" id="(0.9741935483870968,0.14)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VYaOMdNnEeKwWoA8j13SIg" id="(0.01,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_WY-TUNNnEeKwWoA8j13SIg" type="4001" source="_LrtfYNNnEeKwWoA8j13SIg" target="_RAaTMNNnEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_WY-TU9NnEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WY-TVNNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WY-TVdNnEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WY-TVtNnEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WY-TV9NnEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WY-TWNNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WY-TWdNnEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WY-TWtNnEeKwWoA8j13SIg" x="-22" y="24"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WY-TW9NnEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WY-TXNNnEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WY-TXdNnEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WY-TXtNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_WY-TUdNnEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_WYl40NNnEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WY-TUtNnEeKwWoA8j13SIg" points="[3, 0, -115, -211]$[118, 0, 0, -211]$[118, 209, 0, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WZKgkNNnEeKwWoA8j13SIg" id="(0.9815950920245399,0.7241379310344828)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WZKgkdNnEeKwWoA8j13SIg" id="(0.13,0.01652892561983471)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_g6_EENNoEeKwWoA8j13SIg" type="4001" source="_RAaTMNNnEeKwWoA8j13SIg" target="_QDgmENNnEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_g6_EE9NoEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g6_EFNNoEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g6_EFdNoEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g6_EFtNoEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g7FKsNNoEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g7FKsdNoEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g7FKstNoEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g7FKs9NoEeKwWoA8j13SIg" x="2" y="46"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g7FKtNNoEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g7FKtdNoEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g7FKttNoEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g7FKt9NoEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_g6_EEdNoEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_3h0tAM9VEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g6_EEtNoEeKwWoA8j13SIg" points="[-5, -60, 0, 149]$[0, -159, 5, 50]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_g_de8NNpEeKwWoA8j13SIg" type="4003" source="_BZJqcNNnEeKwWoA8j13SIg" target="_Xlp28NNpEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_g_de89NpEeKwWoA8j13SIg" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g_de9NNpEeKwWoA8j13SIg" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g_de9dNpEeKwWoA8j13SIg" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g_de9tNpEeKwWoA8j13SIg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_g_de8dNpEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="architecture-v3.uml#_g-43MNNpEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g_de8tNpEeKwWoA8j13SIg" points="[2, -9, -14, 59]$[11, -53, -5, 15]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g_vy0NNpEeKwWoA8j13SIg" id="(0.4647887323943662,0.06474820143884892)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g_vy0dNpEeKwWoA8j13SIg" id="(0.3836734693877551,0.9838709677419355)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_qANtwNNpEeKwWoA8j13SIg" type="4001" source="_BZJqcNNnEeKwWoA8j13SIg" target="_PInZMNNpEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qAOU0NNpEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qAOU0dNpEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qAO74NNpEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qAO74dNpEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qAO74tNpEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qAO749NpEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qAO75NNpEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qAO75dNpEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qAPi8NNpEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qAPi8dNpEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qAPi8tNpEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qAPi89NpEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_qANtwdNpEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_p_wawNNpEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qANtwtNpEeKwWoA8j13SIg" points="[0, 22, -224, -67]$[0, 89, -224, 0]$[218, 89, -6, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qAWQoNNpEeKwWoA8j13SIg" id="(0.7887323943661971,0.9280575539568345)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qAWQodNpEeKwWoA8j13SIg" id="(0.06,0.37)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_9O-LEEyeEeObF6ELIGKT-g" type="4001" source="_BZJqcNNnEeKwWoA8j13SIg" target="_T7YuEEyeEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_9O-yIEyeEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9O-yIUyeEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9O-yIkyeEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9O-yI0yeEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9O-yJEyeEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9O-yJUyeEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9O-yJkyeEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9O-yJ0yeEeObF6ELIGKT-g" x="-25" y="21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9O-yKEyeEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9O-yKUyeEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9O_ZMEyeEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9O_ZMUyeEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_9O-LEUyeEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_9O7u0EyeEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9O-LEkyeEeObF6ELIGKT-g" points="[6, -6, -135, 0]$[135, -7, -6, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9PGt8EyeEeObF6ELIGKT-g" id="(0.9577464788732394,0.19269102990033224)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9PHVAEyeEeObF6ELIGKT-g" id="(0.024291497975708502,0.37)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_mrloQEyfEeObF6ELIGKT-g" type="4001" source="_T7YuEEyeEeObF6ELIGKT-g" target="_VLl8QEyfEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_mrndcEyfEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mrndcUyfEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mrndckyfEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mroEgEyfEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mroEgUyfEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mroEgkyfEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mrorkEyfEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mrorkUyfEeObF6ELIGKT-g" x="-31" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mrorkkyfEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mrork0yfEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mrpSoEyfEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mrpSoUyfEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_mrloQUyfEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_mrhW0EyfEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mrloQkyfEeObF6ELIGKT-g" points="[0, 4, -153, -88]$[0, 92, -153, 0]$[152, 92, -1, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_msFXgEyfEeObF6ELIGKT-g" id="(0.8663967611336032,0.96)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_msFXgUyfEeObF6ELIGKT-g" id="(0.0051813471502590676,0.38)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_12QZkNNnEeKwWoA8j13SIg" type="PapyrusUMLClassDiagram" name="layer model" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3A1WUNNnEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3A1WUtNnEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3A1WU9NnEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3A1WVNNnEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3A1WVdNnEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3A1WVtNnEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3A1WV9NnEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3A1WWNNnEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3A1WWdNnEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3A1WWtNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3A1WW9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3A1WXNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3A1WXdNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3A1WXtNnEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3A1WX9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3A1WYNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3A1WYdNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3A1WYtNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3A1WY9NnEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3A1WZNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3A1WZdNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3A1WZtNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3A1WZ9NnEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_t0NNoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3A1WUdNnEeKwWoA8j13SIg" x="336" y="264"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3rLT0NNnEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3rLT0tNnEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3rLT09NnEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3rLT1NNnEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3rRacNNnEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3rRacdNnEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3rRactNnEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rRac9NnEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3rRadNNnEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3rRaddNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3rRadtNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3rRad9NnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3rRaeNNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3rRaedNnEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3rRaetNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3rRae9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3rRafNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3rRafdNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3rRaftNnEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3rRaf9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3rRagNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3rRagdNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3rRagtNnEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_3qy5UNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3rLT0dNnEeKwWoA8j13SIg" x="93" y="265"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5s4s4NNnEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5s-zgNNnEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5s-zgdNnEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5s-zgtNnEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5s-zg9NnEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5s-zhNNnEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5s-zhdNnEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5s-zhtNnEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5s-zh9NnEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5s-ziNNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5s-zidNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5s-zitNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5s-zi9NnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5s-zjNNnEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5s-zjdNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5s-zjtNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5s-zj9NnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5s-zkNNnEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5s-zkdNnEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5s-zktNnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5s-zk9NnEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5s-zlNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5s-zldNnEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_rqknoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5s4s4dNnEeKwWoA8j13SIg" x="336" y="96"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QvnosNNoEeKwWoA8j13SIg" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QvnostNoEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qvnos9NoEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QvnotNNoEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QvnotdNoEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QvnottNoEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qvnot9NoEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QvnouNNoEeKwWoA8j13SIg" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_QvVU0NNoEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QvnosdNoEeKwWoA8j13SIg" x="18" y="96" width="235" height="115"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_iO2pQNN0EeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iO3QUNN0EeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iO33YNN0EeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iO33YdN0EeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iO33YtN0EeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iO33Y9N0EeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iO33ZNN0EeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iO33ZdN0EeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iO33ZtN0EeKwWoA8j13SIg" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_zPijENN0EeKwWoA8j13SIg" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="architecture-v3.uml#_zPQPMNN0EeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zPijEdN0EeKwWoA8j13SIg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iO33Z9N0EeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iO33aNN0EeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iO33adN0EeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iO33atN0EeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iO4ecNN0EeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iO4ecdN0EeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iO4ectN0EeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iO4ec9N0EeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iO4edNN0EeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iO4eddN0EeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iO4edtN0EeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iO4ed9N0EeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iO4eeNN0EeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iO4eedN0EeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_iOVr4NN0EeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iO2pQdN0EeKwWoA8j13SIg" x="306" y="468" width="187"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Rks4wNN3EeKwWoA8j13SIg" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rks4wtN3EeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rks4w9N3EeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rks4xNN3EeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rks4xdN3EeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rks4xtN3EeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rks4x9N3EeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Rks4yNN3EeKwWoA8j13SIg" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_Rkak4NN3EeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rks4wdN3EeKwWoA8j13SIg" x="504" y="456" width="231" height="178"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_12QZkdNnEeKwWoA8j13SIg"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KxbdELZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_8_iwcNNnEeKwWoA8j13SIg" type="4001" source="_3rLT0NNnEeKwWoA8j13SIg" target="_3A1WUNNnEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_8_iwc9NnEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8_iwdNNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8_iwddNnEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8_iwdtNnEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8_iwd9NnEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8_iweNNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8_iwedNnEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8_iwetNnEeKwWoA8j13SIg" x="-35" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8_iwe9NnEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8_iwfNNnEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8_iwfdNnEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8_iwftNnEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_8_iwcdNnEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_8_KV8NNnEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8_iwctNnEeKwWoA8j13SIg" points="[10, 4, -151, 0]$[153, 1, -8, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8_o3ENNnEeKwWoA8j13SIg" id="(0.9,0.33)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8_o3EdNnEeKwWoA8j13SIg" id="(0.08,0.38)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_I4D2kNNoEeKwWoA8j13SIg" type="4001" source="_3A1WUNNnEeKwWoA8j13SIg" target="_5s4s4NNnEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_I4D2k9NoEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I4D2lNNoEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I4D2ldNoEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I4D2ltNoEeKwWoA8j13SIg" x="10" y="-50"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I4D2l9NoEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I4D2mNNoEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I4D2mdNoEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I4D2mtNoEeKwWoA8j13SIg" x="-8" y="47"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I4D2m9NoEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I4D2nNNoEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I4D2ndNoEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I4D2ntNoEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_I4D2kdNoEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_3h0tAM9VEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_I4D2ktNoEeKwWoA8j13SIg" points="[0, -50, 0, 118]$[0, -80, 0, 88]$[0, -118, 0, 50]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4CYnANN0EeKwWoA8j13SIg" type="4001" source="_3A1WUNNnEeKwWoA8j13SIg" target="_iO2pQNN0EeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4CetoNN0EeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4CetodN0EeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4CetotN0EeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4Ceto9N0EeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4CetpNN0EeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4CetpdN0EeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4CetptN0EeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4Cetp9N0EeKwWoA8j13SIg" x="-10" y="75"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4CetqNN0EeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4CetqdN0EeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4CetqtN0EeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4Cetq9N0EeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4CYnAdN0EeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_4CAMgNN0EeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4CYnAtN0EeKwWoA8j13SIg" points="[7, 6, 0, -106]$[6, 110, -1, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4Ck0QNN0EeKwWoA8j13SIg" id="(0.4,0.94)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4Ck0QdN0EeKwWoA8j13SIg" id="(0.4117647058823529,0.019230769230769232)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_3zc0INNpEeKwWoA8j13SIg" type="PapyrusUMLClassDiagram" name="LayerStackSynchronizer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="__potQNNpEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__potQtNpEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__potQ9NpEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__potRNNpEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__potRdNpEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__potRtNpEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__potR9NpEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__potSNNpEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__potSdNpEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__potStNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__potS9NpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__potTNNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__potTdNpEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__potTtNpEeKwWoA8j13SIg" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_pEqZkNNrEeKwWoA8j13SIg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_pEYFsNNrEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pEqZkdNrEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qCq58NNrEeKwWoA8j13SIg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_qCessNNrEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qCq58dNrEeKwWoA8j13SIg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="__potT9NpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__potUNNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__potUdNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__potUtNpEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__potU9NpEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__potVNNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__potVdNpEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__potVtNpEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__potV9NpEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_LrbLgNNnEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__potQdNpEeKwWoA8j13SIg" x="233" y="228" width="247" height="385"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AhdtINNqEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AheUMNNqEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AheUMdNqEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ahe7QNNqEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ahe7QdNqEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ahe7QtNqEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ahe7Q9NqEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ahe7RNNqEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ahe7RdNqEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ahe7RtNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ahe7R9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ahe7SNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ahe7SdNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AhfiUNNqEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AhfiUdNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AhfiUtNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AhfiU9NqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AhfiVNNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AhfiVdNqEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AhfiVtNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AhfiV9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AhfiWNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AhfiWdNqEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_rqknoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AhdtIdNqEeKwWoA8j13SIg" x="-13" y="384"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_BPtTMNNqEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BPt6QNNqEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BPt6QdNqEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BPuhUNNqEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BPuhUdNqEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BPuhUtNqEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BPuhU9NqEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BPuhVNNqEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BPuhVdNqEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BPuhVtNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BPuhV9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BPuhWNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BPuhWdNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BPvIYNNqEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BPvIYdNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BPvIYtNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BPvIY9NqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BPvIZNNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BPvIZdNqEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BPvIZtNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BPvIZ9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BPvIaNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BPvIadNqEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_t0NNoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BPtTMdNqEeKwWoA8j13SIg" x="725" y="372"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HJqJINNqEeKwWoA8j13SIg" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HJqJItNqEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HJqJI9NqEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HJqJJNNqEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HJqJJdNqEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HJqJJtNqEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HJqJJ9NqEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HJqJKNNqEeKwWoA8j13SIg" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HJqJKdNqEeKwWoA8j13SIg" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HJqJKtNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HJqJK9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HJqJLNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJqJLdNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HJqJLtNqEeKwWoA8j13SIg" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_JaHv4NNqEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_JZ7ioNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JaHv4dNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_PskVQN9mEeKCZbxNW-U3VQ" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_Ft6TwN9mEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PskVQd9mEeKCZbxNW-U3VQ" x="77" y="27"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HJqJL9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HJqJMNNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HJqJMdNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJqJMtNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HJqJM9NqEeKwWoA8j13SIg" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HJqJNNNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HJqJNdNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HJqJNtNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJqJN9NqEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_HJLoANNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJqJIdNqEeKwWoA8j13SIg" x="12" y="-66"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_OTRQINNqEeKwWoA8j13SIg" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OTRQItNqEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OTRQI9NqEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OTRQJNNqEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OTRQJdNqEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OTRQJtNqEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OTRQJ9NqEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OTRQKNNqEeKwWoA8j13SIg" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OTRQKdNqEeKwWoA8j13SIg" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OTRQKtNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OTRQK9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OTRQLNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OTRQLdNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OTRQLtNqEeKwWoA8j13SIg" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_SmxFoNNqEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_SmexwNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SmxFodNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KdsQQNNrEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_htRxwNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Kds3UNNrEeKwWoA8j13SIg" x="214" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Kdxv0NNrEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_h5JDgNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Kdxv0dNrEeKwWoA8j13SIg" x="214" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Kd0MENNrEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_h69BYNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Kd0MEdNrEeKwWoA8j13SIg" x="214" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Kd3PYNNrEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_iGe78NNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Kd3PYdNrEeKwWoA8j13SIg" x="214" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Kd5roNNrEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_iKn1ENNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Kd6SsNNrEeKwWoA8j13SIg" x="214" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Kd8u8NNrEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_iUNO4NNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Kd8u8dNrEeKwWoA8j13SIg" x="214" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Kd_LMNNrEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_1WChENNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Kd_LMdNrEeKwWoA8j13SIg" x="214" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KeCOgNNrEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_1iV3sNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KeCOgdNrEeKwWoA8j13SIg" x="214" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KeEqwNNrEeKwWoA8j13SIg" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_1mcUkNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KeFR0NNrEeKwWoA8j13SIg" x="214" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EGTcwN9mEeKCZbxNW-U3VQ" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_94G1IN9lEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EGTcwd9mEeKCZbxNW-U3VQ" x="85" y="197"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OTRQL9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OTRQMNNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OTRQMdNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OTRQMtNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OTRQM9NqEeKwWoA8j13SIg" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OTRQNNNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OTRQNdNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OTRQNtNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OTRQN9NqEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_OS41oNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OTRQIdNqEeKwWoA8j13SIg" x="510" y="-204" width="247"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Xb96ANNqEeKwWoA8j13SIg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xb96AtNqEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xb96A9NqEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xb96BNNqEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xb96BdNqEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xb96BtNqEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xb96B9NqEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Xb96CNNqEeKwWoA8j13SIg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Xb96CdNqEeKwWoA8j13SIg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Xb96CtNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Xb96C9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Xb96DNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xb96DdNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Xb96DtNqEeKwWoA8j13SIg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Xb96D9NqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Xb96ENNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Xb96EdNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xb96EtNqEeKwWoA8j13SIg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Xb96E9NqEeKwWoA8j13SIg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Xb96FNNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Xb96FdNqEeKwWoA8j13SIg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Xb96FtNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xb96F9NqEeKwWoA8j13SIg"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_XbvQgNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xb96AdNqEeKwWoA8j13SIg" x="816" y="-138"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_z1aUcNNtEeKwWoA8j13SIg" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z1aUctNtEeKwWoA8j13SIg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z1aUc9NtEeKwWoA8j13SIg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z1aUdNNtEeKwWoA8j13SIg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z1aUddNtEeKwWoA8j13SIg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z1aUdtNtEeKwWoA8j13SIg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z1aUd9NtEeKwWoA8j13SIg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z1aUeNNtEeKwWoA8j13SIg" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_z07zUNNtEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z1aUcdNtEeKwWoA8j13SIg" x="222" y="18" width="271" height="162"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3zc0IdNpEeKwWoA8j13SIg"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_IygSQLZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_AhosQNNqEeKwWoA8j13SIg" type="4001" source="__potQNNpEeKwWoA8j13SIg" target="_AhdtINNqEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ahp6YNNqEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ahp6YdNqEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ahp6YtNqEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ahp6Y9NqEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AhqhcNNqEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AhqhcdNqEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AhqhctNqEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ahqhc9NqEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AhqhdNNqEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AhqhddNqEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AhqhdtNqEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AhrIgNNqEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_AhpTUNNqEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_VX7tENNnEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AhpTUdNqEeKwWoA8j13SIg" points="[-55, -50, 262, 240]$[-317, -290, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_BP4SUNNqEeKwWoA8j13SIg" type="4001" source="__potQNNpEeKwWoA8j13SIg" target="_BPtTMNNqEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_BP5gcNNqEeKwWoA8j13SIg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BP5gcdNqEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BP5gctNqEeKwWoA8j13SIg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BP5gc9NqEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BP5gdNNqEeKwWoA8j13SIg" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BP5gddNqEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BP5gdtNqEeKwWoA8j13SIg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BP6HgNNqEeKwWoA8j13SIg" x="-33" y="26"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BP6HgdNqEeKwWoA8j13SIg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BP6HgtNqEeKwWoA8j13SIg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BP6Hg9NqEeKwWoA8j13SIg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BP6HhNNqEeKwWoA8j13SIg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BP4SUdNqEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_WYl40NNnEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BP4SUtNqEeKwWoA8j13SIg" points="[-55, -50, 262, 240]$[-317, -290, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_TXneUNNrEeKwWoA8j13SIg" type="4008" source="_OTRQINNqEeKwWoA8j13SIg" target="_BPtTMNNqEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TXneU9NrEeKwWoA8j13SIg" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TXneVNNrEeKwWoA8j13SIg" x="-1" y="10"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TXneVdNrEeKwWoA8j13SIg" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TXneVtNrEeKwWoA8j13SIg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_TXneUdNrEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Dependency" href="architecture-v3.uml#_TW8v8NNrEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TXneUtNrEeKwWoA8j13SIg" points="[1, 4, -47, -171]$[43, 168, -5, -7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TXneV9NrEeKwWoA8j13SIg" id="(0.8623481781376519,0.9868421052631579)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TXneWNNrEeKwWoA8j13SIg" id="(0.22,0.07)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_XZmGANNrEeKwWoA8j13SIg" type="4008" source="_OTRQINNqEeKwWoA8j13SIg" target="_Xb96ANNqEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XZmGA9NrEeKwWoA8j13SIg" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XZmGBNNrEeKwWoA8j13SIg" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XZmGBdNrEeKwWoA8j13SIg" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XZmGBtNrEeKwWoA8j13SIg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XZmGAdNrEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Dependency" href="architecture-v3.uml#_XY1RANNrEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XZmGAtNrEeKwWoA8j13SIg" points="[16, -7, -53, 0]$[63, -9, -6, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XZsMoNNrEeKwWoA8j13SIg" id="(0.9352226720647774,0.34539473684210525)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XZsModNrEeKwWoA8j13SIg" id="(0.049586776859504134,0.38)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_f91X8NNrEeKwWoA8j13SIg" type="4003" source="__potQNNpEeKwWoA8j13SIg" target="_HJqJINNqEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_f91X89NrEeKwWoA8j13SIg" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f91X9NNrEeKwWoA8j13SIg" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_f91X9dNrEeKwWoA8j13SIg" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f91X9tNrEeKwWoA8j13SIg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_f91X8dNrEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="architecture-v3.uml#_f9KpkNNrEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f91X8tNrEeKwWoA8j13SIg" points="[-6, -12, 69, 147]$[-68, -152, 7, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f97ekNNrEeKwWoA8j13SIg" id="(0.06072874493927125,0.03116883116883117)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f97ekdNrEeKwWoA8j13SIg" id="(0.8733333333333333,0.9435483870967742)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gzmiUNNrEeKwWoA8j13SIg" type="4003" source="__potQNNpEeKwWoA8j13SIg" target="_OTRQINNqEeKwWoA8j13SIg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gzmiU9NrEeKwWoA8j13SIg" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gzmiVNNrEeKwWoA8j13SIg" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gzmiVdNrEeKwWoA8j13SIg" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gzmiVtNrEeKwWoA8j13SIg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_gzmiUdNrEeKwWoA8j13SIg" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="architecture-v3.uml#_gyvmsNNrEeKwWoA8j13SIg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gzmiUtNrEeKwWoA8j13SIg" points="[11, -7, -57, 35]$[63, -33, -5, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gzso8NNrEeKwWoA8j13SIg" id="(0.9554655870445344,0.033766233766233764)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gzso8dNrEeKwWoA8j13SIg" id="(0.20647773279352227,0.9703947368421053)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_TiMgUNRgEeKHbZ6TDsPmrQ" type="PapyrusUMLClassDiagram" name="ext prop" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_WW-VENRgEeKHbZ6TDsPmrQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WXEbsNRgEeKHbZ6TDsPmrQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WXEbsdRgEeKHbZ6TDsPmrQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WXEbstRgEeKHbZ6TDsPmrQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WXEbs9RgEeKHbZ6TDsPmrQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WXEbtNRgEeKHbZ6TDsPmrQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WXEbtdRgEeKHbZ6TDsPmrQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WXEbttRgEeKHbZ6TDsPmrQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WXEbt9RgEeKHbZ6TDsPmrQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_h3P6UNRgEeKHbZ6TDsPmrQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="architecture-v3.uml#_h2j90NRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_h3P6UdRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WXEbuNRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WXEbudRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WXEbutRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WXEbu9RgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WXEbvNRgEeKHbZ6TDsPmrQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WXEbvdRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WXEbvtRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WXEbv9RgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WXEbwNRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WXEbwdRgEeKHbZ6TDsPmrQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WXEbwtRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WXEbw9RgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WXEbxNRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WXEbxdRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_WWBS0NRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WW-VEdRgEeKHbZ6TDsPmrQ" x="342" y="102"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XqfycNRgEeKHbZ6TDsPmrQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XqfyctRgEeKHbZ6TDsPmrQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xqfyc9RgEeKHbZ6TDsPmrQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XqfydNRgEeKHbZ6TDsPmrQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XqfyddRgEeKHbZ6TDsPmrQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XqfydtRgEeKHbZ6TDsPmrQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xqfyd9RgEeKHbZ6TDsPmrQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XqfyeNRgEeKHbZ6TDsPmrQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XqfyedRgEeKHbZ6TDsPmrQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XqfyetRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Xqfye9RgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XqfyfNRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XqfyfdRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XqfyftRgEeKHbZ6TDsPmrQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Xqfyf9RgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XqfygNRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XqfygdRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XqfygtRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Xql5ENRgEeKHbZ6TDsPmrQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Xql5EdRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Xql5EtRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Xql5E9RgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xql5FNRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_XqHX8NRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XqfycdRgEeKHbZ6TDsPmrQ" x="582" y="96"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Y8lscNRgEeKHbZ6TDsPmrQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y8lsctRgEeKHbZ6TDsPmrQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y8lsc9RgEeKHbZ6TDsPmrQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y8lsdNRgEeKHbZ6TDsPmrQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y8lsddRgEeKHbZ6TDsPmrQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y8lsdtRgEeKHbZ6TDsPmrQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y8lsd9RgEeKHbZ6TDsPmrQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y8lseNRgEeKHbZ6TDsPmrQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y8lsedRgEeKHbZ6TDsPmrQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y8lsetRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y8lse9RgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y8lsfNRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y8lsfdRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y8lsftRgEeKHbZ6TDsPmrQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y8lsf9RgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y8lsgNRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y8lsgdRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y8lsgtRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y8lsg9RgEeKHbZ6TDsPmrQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y8lshNRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y8lshdRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y8lshtRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y8lsh9RgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_Y8NR8NRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y8lscdRgEeKHbZ6TDsPmrQ" x="348" y="287"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_dFliINRgEeKHbZ6TDsPmrQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dFliItRgEeKHbZ6TDsPmrQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFliI9RgEeKHbZ6TDsPmrQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dFliJNRgEeKHbZ6TDsPmrQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFliJdRgEeKHbZ6TDsPmrQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dFliJtRgEeKHbZ6TDsPmrQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFliJ9RgEeKHbZ6TDsPmrQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dFliKNRgEeKHbZ6TDsPmrQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dFliKdRgEeKHbZ6TDsPmrQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dFliKtRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dFliK9RgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dFliLNRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dFliLdRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dFliLtRgEeKHbZ6TDsPmrQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dFliL9RgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dFliMNRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dFliMdRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dFliMtRgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dFliM9RgEeKHbZ6TDsPmrQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dFliNNRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dFliNdRgEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dFliNtRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dFliN9RgEeKHbZ6TDsPmrQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_dFTOQNRgEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dFliIdRgEeKHbZ6TDsPmrQ" x="36" y="107" width="133"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_BrquMNRhEeKHbZ6TDsPmrQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BrquMtRhEeKHbZ6TDsPmrQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BrquM9RhEeKHbZ6TDsPmrQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BrquNNRhEeKHbZ6TDsPmrQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BrquNdRhEeKHbZ6TDsPmrQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BrquNtRhEeKHbZ6TDsPmrQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BrquN9RhEeKHbZ6TDsPmrQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BrquONRhEeKHbZ6TDsPmrQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BrquOdRhEeKHbZ6TDsPmrQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BrquOtRhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BrquO9RhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BrquPNRhEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BrquPdRhEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BrquPtRhEeKHbZ6TDsPmrQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BrquP9RhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BrquQNRhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BrquQdRhEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BrquQtRhEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BrquQ9RhEeKHbZ6TDsPmrQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BrquRNRhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BrquRdRhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BrquRtRhEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BrquR9RhEeKHbZ6TDsPmrQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_BrSTsNRhEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BrquMdRhEeKHbZ6TDsPmrQ" x="66" y="288"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_F0mScNRhEeKHbZ6TDsPmrQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_F0mSctRhEeKHbZ6TDsPmrQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_F0mSc9RhEeKHbZ6TDsPmrQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_F0mSdNRhEeKHbZ6TDsPmrQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_F0mSddRhEeKHbZ6TDsPmrQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_F0mSdtRhEeKHbZ6TDsPmrQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_F0mSd9RhEeKHbZ6TDsPmrQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_F0mSeNRhEeKHbZ6TDsPmrQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_F0mSedRhEeKHbZ6TDsPmrQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_F0mSetRhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_F0mSe9RhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_F0mSfNRhEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F0mSfdRhEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_F0mSftRhEeKHbZ6TDsPmrQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_F0mSf9RhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_F0mSgNRhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_F0mSgdRhEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F0mSgtRhEeKHbZ6TDsPmrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_F0mSg9RhEeKHbZ6TDsPmrQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_F0mShNRhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_F0mShdRhEeKHbZ6TDsPmrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_F0mShtRhEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F0mSh9RhEeKHbZ6TDsPmrQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_F0T-kNRhEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F0mScdRhEeKHbZ6TDsPmrQ" x="570" y="288"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_8t6EoNRpEeKHbZ6TDsPmrQ" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8t6EotRpEeKHbZ6TDsPmrQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8t6Eo9RpEeKHbZ6TDsPmrQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8t6EpNRpEeKHbZ6TDsPmrQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8t6EpdRpEeKHbZ6TDsPmrQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8t6EptRpEeKHbZ6TDsPmrQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8t6Ep9RpEeKHbZ6TDsPmrQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8t6EqNRpEeKHbZ6TDsPmrQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_8tJPoNRpEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8t6EodRpEeKHbZ6TDsPmrQ" x="582" y="12" width="201"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4z5MgNRxEeKHbZ6TDsPmrQ" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4z_TINRxEeKHbZ6TDsPmrQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4z_TIdRxEeKHbZ6TDsPmrQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4z_TItRxEeKHbZ6TDsPmrQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4z_TI9RxEeKHbZ6TDsPmrQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4z_TJNRxEeKHbZ6TDsPmrQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4z_TJdRxEeKHbZ6TDsPmrQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4z_TJtRxEeKHbZ6TDsPmrQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_4zs_QNRxEeKHbZ6TDsPmrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4z5MgdRxEeKHbZ6TDsPmrQ" x="42" y="6" width="175" height="79"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_TiMgUdRgEeKHbZ6TDsPmrQ"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_MIZBMNRgEeKHbZ6TDsPmrQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_bpqWsNRgEeKHbZ6TDsPmrQ" type="4001" source="_WW-VENRgEeKHbZ6TDsPmrQ" target="_XqfycNRgEeKHbZ6TDsPmrQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bpqWs9RgEeKHbZ6TDsPmrQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bpwdUNRgEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bpwdUdRgEeKHbZ6TDsPmrQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bpwdUtRgEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bpwdU9RgEeKHbZ6TDsPmrQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bpwdVNRgEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bpwdVdRgEeKHbZ6TDsPmrQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bpwdVtRgEeKHbZ6TDsPmrQ" x="-21" y="22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bpwdV9RgEeKHbZ6TDsPmrQ" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bpwdWNRgEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bpwdWdRgEeKHbZ6TDsPmrQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bpwdWtRgEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bpqWsdRgEeKHbZ6TDsPmrQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_bpFu8NRgEeKHbZ6TDsPmrQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bpqWstRgEeKHbZ6TDsPmrQ" points="[3, -3, -152, 0]$[143, -6, -12, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bp8qkNRgEeKHbZ6TDsPmrQ" id="(0.97,0.39)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bp8qkdRgEeKHbZ6TDsPmrQ" id="(0.12,0.42)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gYHC0NRgEeKHbZ6TDsPmrQ" type="4001" source="_dFliINRgEeKHbZ6TDsPmrQ" target="_WW-VENRgEeKHbZ6TDsPmrQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gYNJcNRgEeKHbZ6TDsPmrQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gYNJcdRgEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gYNJctRgEeKHbZ6TDsPmrQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gYNJc9RgEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gYNJdNRgEeKHbZ6TDsPmrQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gYNJddRgEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gYNJdtRgEeKHbZ6TDsPmrQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gYNJd9RgEeKHbZ6TDsPmrQ" x="-28" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gYNJeNRgEeKHbZ6TDsPmrQ" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gYNJedRgEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gYNJetRgEeKHbZ6TDsPmrQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gYNJe9RgEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_gYHC0dRgEeKHbZ6TDsPmrQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_gX0u8NRgEeKHbZ6TDsPmrQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gYHC0tRgEeKHbZ6TDsPmrQ" points="[8, -3, -174, 0]$[181, -4, -1, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gYTQENRgEeKHbZ6TDsPmrQ" id="(0.9398496240601504,0.41)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gYTQEdRgEeKHbZ6TDsPmrQ" id="(0.01,0.43)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_EfFRANRhEeKHbZ6TDsPmrQ" type="4001" source="_BrquMNRhEeKHbZ6TDsPmrQ" target="_Y8lscNRgEeKHbZ6TDsPmrQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EfFRA9RhEeKHbZ6TDsPmrQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EfFRBNRhEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EfFRBdRhEeKHbZ6TDsPmrQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EfFRBtRhEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EfFRB9RhEeKHbZ6TDsPmrQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EfFRCNRhEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EfFRCdRhEeKHbZ6TDsPmrQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EfFRCtRhEeKHbZ6TDsPmrQ" x="-37" y="28"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EfFRC9RhEeKHbZ6TDsPmrQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EfFRDNRhEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EfFRDdRhEeKHbZ6TDsPmrQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EfFRDtRhEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_EfFRAdRhEeKHbZ6TDsPmrQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_Eemv4NRhEeKHbZ6TDsPmrQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EfFRAtRhEeKHbZ6TDsPmrQ" points="[7, 3, -187, 0]$[189, 3, -5, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EfReQNRhEeKHbZ6TDsPmrQ" id="(0.93,0.51)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EfReQdRhEeKHbZ6TDsPmrQ" id="(0.05,0.55)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_HrC2sNRhEeKHbZ6TDsPmrQ" type="4001" source="_Y8lscNRgEeKHbZ6TDsPmrQ" target="_F0mScNRhEeKHbZ6TDsPmrQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_HrC2s9RhEeKHbZ6TDsPmrQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HrC2tNRhEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HrC2tdRhEeKHbZ6TDsPmrQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HrC2ttRhEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HrC2t9RhEeKHbZ6TDsPmrQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HrC2uNRhEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HrC2udRhEeKHbZ6TDsPmrQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HrC2utRhEeKHbZ6TDsPmrQ" x="-18" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HrC2u9RhEeKHbZ6TDsPmrQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HrC2vNRhEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HrC2vdRhEeKHbZ6TDsPmrQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HrC2vtRhEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HrC2sdRhEeKHbZ6TDsPmrQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_HqkVkNRhEeKHbZ6TDsPmrQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HrC2stRhEeKHbZ6TDsPmrQ" points="[9, 3, -130, 0]$[131, 4, -8, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HrPD8NRhEeKHbZ6TDsPmrQ" id="(0.91,0.54)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HrPD8dRhEeKHbZ6TDsPmrQ" id="(0.08,0.56)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Ivq8cNRhEeKHbZ6TDsPmrQ" type="4001" source="_Y8lscNRgEeKHbZ6TDsPmrQ" target="_WW-VENRgEeKHbZ6TDsPmrQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ivq8c9RhEeKHbZ6TDsPmrQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ivq8dNRhEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ivq8ddRhEeKHbZ6TDsPmrQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ivq8dtRhEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ivq8d9RhEeKHbZ6TDsPmrQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ivq8eNRhEeKHbZ6TDsPmrQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ivq8edRhEeKHbZ6TDsPmrQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ivq8etRhEeKHbZ6TDsPmrQ" x="-8" y="52"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ivq8e9RhEeKHbZ6TDsPmrQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ivq8fNRhEeKHbZ6TDsPmrQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ivq8fdRhEeKHbZ6TDsPmrQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ivq8ftRhEeKHbZ6TDsPmrQ" x="-8" y="-27"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Ivq8cdRhEeKHbZ6TDsPmrQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_IvSh8NRhEeKHbZ6TDsPmrQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ivq8ctRhEeKHbZ6TDsPmrQ" points="[4, -4, 0, 88]$[1, -85, -3, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Iv3JsNRhEeKHbZ6TDsPmrQ" id="(0.42,0.04)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Iv3JsdRhEeKHbZ6TDsPmrQ" id="(0.39097744360902253,0.9326923076923077)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_C6rDcNeMEeKpd73UUMObaQ" type="PapyrusUMLClassDiagram" name="property" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_IQQoENeMEeKpd73UUMObaQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IQQoEteMEeKpd73UUMObaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IQQoE9eMEeKpd73UUMObaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IQQoFNeMEeKpd73UUMObaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IQQoFdeMEeKpd73UUMObaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IQQoFteMEeKpd73UUMObaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IQQoF9eMEeKpd73UUMObaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IQQoGNeMEeKpd73UUMObaQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IQQoGdeMEeKpd73UUMObaQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_CC7GoNeNEeKpd73UUMObaQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="architecture-v3.uml#_xNNKINIPEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CC7GodeNEeKpd73UUMObaQ" x="42" y="3"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IQQoGteMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IQQoG9eMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IQQoHNeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IQQoHdeMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IQQoHteMEeKpd73UUMObaQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_ND_AUNeNEeKpd73UUMObaQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_NDsscNeNEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ND_AUdeNEeKpd73UUMObaQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IQQoH9eMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IQQoINeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IQQoIdeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IQQoIteMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IQQoI9eMEeKpd73UUMObaQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IQQoJNeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IQQoJdeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IQQoJteMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IQQoJ9eMEeKpd73UUMObaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_UzekYM-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IQQoEdeMEeKpd73UUMObaQ" x="324" y="126" height="223"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JeFGENeMEeKpd73UUMObaQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JeFGEteMEeKpd73UUMObaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JeFGE9eMEeKpd73UUMObaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JeFGFNeMEeKpd73UUMObaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JeFGFdeMEeKpd73UUMObaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JeFGFteMEeKpd73UUMObaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JeFGF9eMEeKpd73UUMObaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JeFGGNeMEeKpd73UUMObaQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JeFGGdeMEeKpd73UUMObaQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JeFGGteMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JeFGG9eMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JeFGHNeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JeFGHdeMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JeFGHteMEeKpd73UUMObaQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JeFGH9eMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JeFGINeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JeFGIdeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JeFGIteMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JeFGI9eMEeKpd73UUMObaQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JeFGJNeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JeFGJdeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JeFGJteMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JeFGJ9eMEeKpd73UUMObaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_SZ1McM-yEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JeFGEdeMEeKpd73UUMObaQ" x="654" y="12"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QKDO0NeMEeKpd73UUMObaQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QKJVcNeMEeKpd73UUMObaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QKJVcdeMEeKpd73UUMObaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QKJVcteMEeKpd73UUMObaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QKJVc9eMEeKpd73UUMObaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QKJVdNeMEeKpd73UUMObaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QKJVddeMEeKpd73UUMObaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QKJVdteMEeKpd73UUMObaQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QKJVd9eMEeKpd73UUMObaQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QKJVeNeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QKJVedeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QKJVeteMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QKJVe9eMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QKJVfNeMEeKpd73UUMObaQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QKJVfdeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QKJVfteMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QKJVf9eMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QKJVgNeMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QKJVgdeMEeKpd73UUMObaQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QKJVgteMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QKJVg9eMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QKJVhNeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QKJVhdeMEeKpd73UUMObaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_l4yNkM-0EeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QKDO0deMEeKpd73UUMObaQ" x="660" y="180" height="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WMui8NeMEeKpd73UUMObaQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WMui8teMEeKpd73UUMObaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WMui89eMEeKpd73UUMObaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WMui9NeMEeKpd73UUMObaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WMui9deMEeKpd73UUMObaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WMui9teMEeKpd73UUMObaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WMui99eMEeKpd73UUMObaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WMui-NeMEeKpd73UUMObaQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WMui-deMEeKpd73UUMObaQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WMui-teMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WMui-9eMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WMui_NeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WMui_deMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WMui_teMEeKpd73UUMObaQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WMui_9eMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WMujANeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WMujAdeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WMujAteMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WMujA9eMEeKpd73UUMObaQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WMujBNeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WMujBdeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WMujBteMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WMujB9eMEeKpd73UUMObaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_WMWIcNeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WMui8deMEeKpd73UUMObaQ" x="42" y="36" width="117" height="151"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jrOIYNeMEeKpd73UUMObaQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jrOIYteMEeKpd73UUMObaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jrOIY9eMEeKpd73UUMObaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jrOIZNeMEeKpd73UUMObaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jrOIZdeMEeKpd73UUMObaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jrOIZteMEeKpd73UUMObaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jrOIZ9eMEeKpd73UUMObaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jrOIaNeMEeKpd73UUMObaQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jrOIadeMEeKpd73UUMObaQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jrOIateMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jrOIa9eMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jrOIbNeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jrOIbdeMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jrOIbteMEeKpd73UUMObaQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_oixGINeMEeKpd73UUMObaQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_urYKgNeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oixGIdeMEeKpd73UUMObaQ" x="26" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qVMGANeMEeKpd73UUMObaQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_AYzD8NeJEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qVMGAdeMEeKpd73UUMObaQ" x="19" y="21"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jrOIb9eMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jrOIcNeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jrOIcdeMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jrOIcteMEeKpd73UUMObaQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jrOIc9eMEeKpd73UUMObaQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jrOIdNeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jrOIddeMEeKpd73UUMObaQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jrOIdteMEeKpd73UUMObaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jrOId9eMEeKpd73UUMObaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_uIcTcM-wEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jrOIYdeMEeKpd73UUMObaQ" x="36" y="330"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_C6rDcdeMEeKpd73UUMObaQ"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_KxbdELZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_PGankNeMEeKpd73UUMObaQ" type="4001" source="_JeFGENeMEeKpd73UUMObaQ" target="_IQQoENeMEeKpd73UUMObaQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PGank9eMEeKpd73UUMObaQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PGanlNeMEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PGanldeMEeKpd73UUMObaQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PGanlteMEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PGanl9eMEeKpd73UUMObaQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PGanmNeMEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PGanmdeMEeKpd73UUMObaQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PGanmteMEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PGanm9eMEeKpd73UUMObaQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PGannNeMEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PGanndeMEeKpd73UUMObaQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PGannteMEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_PGankdeMEeKpd73UUMObaQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_mjiFoM-yEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PGankteMEeKpd73UUMObaQ" points="[-57, 20, 144, -53]$[-138, 50, 63, -23]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_S9ME0NeMEeKpd73UUMObaQ" type="4001" source="_QKDO0NeMEeKpd73UUMObaQ" target="_IQQoENeMEeKpd73UUMObaQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_S9ME09eMEeKpd73UUMObaQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S9ME1NeMEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S9ME1deMEeKpd73UUMObaQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S9ME1teMEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S9ME19eMEeKpd73UUMObaQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S9ME2NeMEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S9ME2deMEeKpd73UUMObaQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S9ME2teMEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S9ME29eMEeKpd73UUMObaQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S9ME3NeMEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S9ME3deMEeKpd73UUMObaQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S9ME3teMEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_S9ME0deMEeKpd73UUMObaQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_OFj2sM-5EeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_S9ME0teMEeKpd73UUMObaQ" points="[-50, -9, 235, 38]$[-184, -31, 101, 16]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BPfCENeOEeKpd73UUMObaQ" id="(0.02,0.3609467455621302)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_cYuVsNeNEeKpd73UUMObaQ" type="4001" source="_IQQoENeMEeKpd73UUMObaQ" target="_QKDO0NeMEeKpd73UUMObaQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cYvj0NeNEeKpd73UUMObaQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cYvj0deNEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cYvj0teNEeKpd73UUMObaQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cYvj09eNEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cYwK4NeNEeKpd73UUMObaQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cYwK4deNEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cYwK4teNEeKpd73UUMObaQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cYwK49eNEeKpd73UUMObaQ" x="-38" y="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cYwx8NeNEeKpd73UUMObaQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cYwx8deNEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cYwx8teNEeKpd73UUMObaQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cYwx89eNEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_cYuVsdeNEeKpd73UUMObaQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_cYKVANeNEeKpd73UUMObaQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cYuVsteNEeKpd73UUMObaQ" points="[10, 1, -140, -26]$[144, 30, -6, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cY7xENeNEeKpd73UUMObaQ" id="(0.9504950495049505,0.8956521739130435)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cY7xEdeNEeKpd73UUMObaQ" id="(0.05,0.8520710059171598)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_H_WMUNeOEeKpd73UUMObaQ" type="4001" source="_WMui8NeMEeKpd73UUMObaQ" target="_IQQoENeMEeKpd73UUMObaQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_H_WMU9eOEeKpd73UUMObaQ" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_H_WMVNeOEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H_WMVdeOEeKpd73UUMObaQ" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_H_WMVteOEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H_WMV9eOEeKpd73UUMObaQ" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_H_WMWNeOEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H_WMWdeOEeKpd73UUMObaQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_H_WMWteOEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H_WMW9eOEeKpd73UUMObaQ" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_H_WMXNeOEeKpd73UUMObaQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H_WMXdeOEeKpd73UUMObaQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_H_WMXteOEeKpd73UUMObaQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_H_WMUdeOEeKpd73UUMObaQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_H-9x0NeOEeKpd73UUMObaQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_H_WMUteOEeKpd73UUMObaQ" points="[5, 0, -168, -10]$[170, 7, -3, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_H_iZkNeOEeKpd73UUMObaQ" id="(0.9572649572649573,0.6688741721854304)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_H_iZkdeOEeKpd73UUMObaQ" id="(0.01485148514851485,0.09417040358744394)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_rVlkIEydEeObF6ELIGKT-g" type="PapyrusUMLClassDiagram" name="notifiers" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_-maNMEygEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-ma0QEygEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-mbbUEygEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-mbbUUygEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-mbbUkygEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-mcCYEygEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-mcCYUygEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-mcCYkygEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-mcCY0ygEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-mcCZEygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-mcCZUygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-mcCZkygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-mcCZ0ygEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-mcpcEygEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-mcpcUygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-mcpckygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-mcpc0ygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-mcpdEygEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-mcpdUygEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-mcpdkygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-mcpd0ygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-mcpeEygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-mcpeUygEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_-mWi0EygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-maNMUygEeObF6ELIGKT-g" x="126" y="80" width="427"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GmVRIEyhEeObF6ELIGKT-g" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GmWfQEyhEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GmWfQUyhEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GmWfQkyhEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GmWfQ0yhEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GmXGUEyhEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GmXGUUyhEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GmXGUkyhEeObF6ELIGKT-g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GmXGU0yhEeObF6ELIGKT-g" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GmXGVEyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GmXGVUyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GmXGVkyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GmXGV0yhEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GmXtYEyhEeObF6ELIGKT-g" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_L2LaIEyhEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_L2KMAEyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2LaIUyhEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_M_ytkEyhEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_M_w4YEyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_M_ytkUyhEeObF6ELIGKT-g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GmXtYUyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GmXtYkyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GmXtY0yhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GmXtZEyhEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GmYUcEyhEeObF6ELIGKT-g" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GmYUcUyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GmYUckyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GmYUc0yhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GmYUdEyhEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_GmQYoEyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GmVRIUyhEeObF6ELIGKT-g" x="828" y="72" width="257"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VVjeoEyhEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VVkFsEyhEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VVkFsUyhEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VVkswEyhEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VVkswUyhEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VVkswkyhEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VVksw0yhEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VVksxEyhEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VVlT0EyhEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VVlT0UyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VVlT0kyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VVlT00yhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VVlT1EyhEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VVlT1UyhEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VVlT1kyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VVlT10yhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VVlT2EyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VVlT2UyhEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VVl64EyhEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VVl64UyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VVl64kyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VVl640yhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VVl65EyhEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_VVf0QEyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VVjeoUyhEeObF6ELIGKT-g" x="126" y="210" width="427"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lo040EyhEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lo2G8EyhEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lo2G8UyhEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lo2G8kyhEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lo2G80yhEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lo2uAEyhEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lo2uAUyhEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lo2uAkyhEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_lo2uA0yhEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lo2uBEyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_lo2uBUyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_lo2uBkyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lo2uB0yhEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_lo3VEEyhEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lo3VEUyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_lo3VEkyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_lo3VE0yhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lo3VFEyhEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_lo38IEyhEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lo38IUyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_lo38IkyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_lo38I0yhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lo38JEyhEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_loxOcEyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lo040UyhEeObF6ELIGKT-g" x="136" y="390"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qDvk8EyhEeObF6ELIGKT-g" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qDwzEEyhEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qDwzEUyhEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qDxaIEyhEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qDxaIUyhEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qDxaIkyhEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qDxaI0yhEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qDyBMEyhEeObF6ELIGKT-g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qDyBMUyhEeObF6ELIGKT-g" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qDyBMkyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qDyBM0yhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qDyBNEyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qDyBNUyhEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qDyoQEyhEeObF6ELIGKT-g" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_s_I_EEyhEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_s_IYAEyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_s_I_EUyhEeObF6ELIGKT-g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qDyoQUyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qDyoQkyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qDyoQ0yhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qDyoREyhEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qDyoRUyhEeObF6ELIGKT-g" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qDyoRkyhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qDyoR0yhEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qDyoSEyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qDyoSUyhEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_qDr6kEyhEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qDvk8UyhEeObF6ELIGKT-g" x="834" y="384"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_dK2xgEyiEeObF6ELIGKT-g" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dK4msEyiEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dK4msUyiEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dK4mskyiEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dK4ms0yiEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dK5NwEyiEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dK5NwUyiEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dK5NwkyiEeObF6ELIGKT-g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dK5Nw0yiEeObF6ELIGKT-g" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dK5NxEyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dK5NxUyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dK5NxkyiEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dK5Nx0yiEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dK500EyiEeObF6ELIGKT-g" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_fdtk8EyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_h69BYNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fdtk8UyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fdwBMEyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_iKn1ENNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fdwBMUyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fdx2YEyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_iGe78NNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fdx2YUyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fd0SoEyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_1WChENNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fd0SoUyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fd2H0EyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_iUNO4NNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fd2H0UyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fd5LIEyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_SmexwNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fd5LIUyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fd7AUEyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_h5JDgNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fd7AUUyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fd8OcEyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_htRxwNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fd8OcUyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fd9ckEyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_1iV3sNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fd9ckUyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fd_RwEyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_94G1IN9lEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fd_RwUyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_feAf4EyiEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_1mcUkNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_feAf4UyiEeObF6ELIGKT-g" x="45" y="4"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dK500UyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dK500kyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dK5000yiEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dK501EyiEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dK501UyiEeObF6ELIGKT-g" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dK501kyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dK5010yiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dK502EyiEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dK502UyiEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_OS41oNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dK2xgUyiEeObF6ELIGKT-g" x="834" y="540"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-owEoEyiEeObF6ELIGKT-g" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-oxSwEyiEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-oxSwUyiEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-oxSwkyiEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-ox50EyiEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-ox50UyiEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-ox50kyiEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-ox500yiEeObF6ELIGKT-g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-oyg4EyiEeObF6ELIGKT-g" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-oyg4UyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-oyg4kyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-oyg40yiEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-oyg5EyiEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-oyg5UyiEeObF6ELIGKT-g" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_T8GGcEyjEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_JZ7ioNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T8GGcUyjEeObF6ELIGKT-g" x="23" y="7"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T8KX4EyjEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_Ft6TwN9mEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T8KX4UyjEeObF6ELIGKT-g" x="23" y="7"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-oyg5kyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-oyg50yiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-oyg6EyiEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-oyg6UyiEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-ozH8EyiEeObF6ELIGKT-g" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-ozH8UyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-ozH8kyiEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-ozH80yiEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-ozH9EyiEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_HJLoANNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-owEoUyiEeObF6ELIGKT-g" x="834" y="882"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LY9nwEyjEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LY-14EyjEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LY_c8EyjEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LY_c8UyjEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LY_c8kyjEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LY_c80yjEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LZAEAEyjEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LZAEAUyjEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LZAEAkyjEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LZAEA0yjEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LZAEBEyjEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LZAEBUyjEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LZAEBkyjEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LZArEEyjEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LZArEUyjEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LZArEkyjEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LZArE0yjEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LZArFEyjEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LZArFUyjEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LZArFkyjEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LZArF0yjEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LZArGEyjEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LZArGUyjEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_JwRLoEyjEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LY9nwUyjEeObF6ELIGKT-g" x="168" y="900"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a8t0EEykEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8vCMEykEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8vCMUykEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8vCMkykEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8vCM0ykEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8vCNEykEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8vpQEykEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8vpQUykEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8vpQkykEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8vpQ0ykEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8vpREykEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8vpRUykEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8vpRkykEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8wQUEykEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8wQUUykEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8wQUkykEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8wQU0ykEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8wQVEykEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8wQVUykEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8wQVkykEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8wQV0ykEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8wQWEykEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8wQWUykEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_a8pioEykEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8t0EUykEeObF6ELIGKT-g" x="156" y="624"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l9pYoEypEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l9p_sEypEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l9p_sUypEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l9p_skypEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l9p_s0ypEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l9p_tEypEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l9p_tUypEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l9p_tkypEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l9p_t0ypEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l9p_uEypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l9p_uUypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l9p_ukypEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l9p_u0ypEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l9p_vEypEeObF6ELIGKT-g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_Wxds4EyqEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_WxdF0EyqEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wxds4UyqEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YPAB4EyqEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_YO_a0EyqEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YPAB4UyqEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Z0-hMEyqEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GOzWYEyrEeObF6ELIGKT-g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hwd9cEyrEeObF6ELIGKT-g" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_Z096IEyqEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Z0-hMUyqEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bz8IQEyqEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_bz66IEyqEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bz8IQUyqEeObF6ELIGKT-g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l9p_vUypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l9p_vkypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l9p_v0ypEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l9p_wEypEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l9p_wUypEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l9p_wkypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l9p_w0ypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l9p_xEypEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l9p_xUypEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_l9oKgEypEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l9pYoUypEeObF6ELIGKT-g" x="144" y="1062" width="265"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qwHCEEypEeObF6ELIGKT-g" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qwIQMEypEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qwIQMUypEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qwIQMkypEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qwIQM0ypEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qwI3QEypEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qwI3QUypEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qwI3QkypEeObF6ELIGKT-g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qwI3Q0ypEeObF6ELIGKT-g" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qwI3REypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qwI3RUypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qwI3RkypEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qwI3R0ypEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qwJeUEypEeObF6ELIGKT-g" type="7007">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qwJeUUypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qwJeUkypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qwJeU0ypEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qwJeVEypEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qwJeVUypEeObF6ELIGKT-g" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qwJeVkypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qwJeV0ypEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qwJeWEypEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qwJeWUypEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_qwDXsEypEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qwHCEUypEeObF6ELIGKT-g" x="828" y="1074"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_H5OekEywEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H5PFoEywEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H5PFoUywEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H5PFokywEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H5PFo0ywEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H5PFpEywEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H5PFpUywEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H5PFpkywEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H5PFp0ywEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H5PFqEywEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_H5PFqUywEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_H5PFqkywEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H5PFq0ywEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H5PFrEywEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H5PFrUywEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_H5PFrkywEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_H5PFr0ywEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H5PFsEywEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H5PssEywEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H5PssUywEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_H5PsskywEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_H5Pss0ywEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H5PstEywEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_rezFUEyvEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H5OekUywEeObF6ELIGKT-g" x="114" y="1278"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_rVlkIUydEeObF6ELIGKT-g"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_IygSQLZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Z_uuwEyhEeObF6ELIGKT-g" type="4007" source="_-maNMEygEeObF6ELIGKT-g" target="_GmVRIEyhEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z_v84EyhEeObF6ELIGKT-g" visible="false" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Z_wj8EyhEeObF6ELIGKT-g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z_wj8UyhEeObF6ELIGKT-g" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Z_wj8kyhEeObF6ELIGKT-g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Z_uuwUyhEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_Z_oBEEyhEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Z_uuwkyhEeObF6ELIGKT-g" points="[7, -3, -275, 0]$[282, -3, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aAC30EyhEeObF6ELIGKT-g" id="(0.9836065573770492,0.41)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aAC30UyhEeObF6ELIGKT-g" id="(0.0,0.3194444444444444)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bc86sEyhEeObF6ELIGKT-g" type="4007" source="_VVjeoEyhEeObF6ELIGKT-g" target="_GmVRIEyhEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bc-v4EyhEeObF6ELIGKT-g" visible="false" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bc-v4UyhEeObF6ELIGKT-g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bc-v4kyhEeObF6ELIGKT-g" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bc_W8EyhEeObF6ELIGKT-g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bc86sUyhEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_bc3bIEyhEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bc86skyhEeObF6ELIGKT-g" points="[7, -3, -276, 98]$[282, -101, -1, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bdLkMEyhEeObF6ELIGKT-g" id="(0.9836065573770492,0.42)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bdMLQEyhEeObF6ELIGKT-g" id="(0.0038910505836575876,0.8402777777777778)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uanekEyhEeObF6ELIGKT-g" type="4007" source="_lo040EyhEeObF6ELIGKT-g" target="_qDvk8EyhEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uaossEyhEeObF6ELIGKT-g" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uaossUyhEeObF6ELIGKT-g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uapTwEyhEeObF6ELIGKT-g" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uapTwUyhEeObF6ELIGKT-g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uanekUyhEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_uaimEEyhEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uanekkyhEeObF6ELIGKT-g" points="[4, -6, -339, 0]$[340, -7, -3, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ua2vIEyhEeObF6ELIGKT-g" id="(0.988950276243094,0.47)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ua3WMEyhEeObF6ELIGKT-g" id="(0.011029411764705883,0.3790322580645161)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Soo6gEyjEeObF6ELIGKT-g" type="4007" source="_LY9nwEyjEeObF6ELIGKT-g" target="_-owEoEyiEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_SoqIoEyjEeObF6ELIGKT-g" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SoqvsEyjEeObF6ELIGKT-g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SoqvsUyjEeObF6ELIGKT-g" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SorWwEyjEeObF6ELIGKT-g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Soo6gUyjEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_SokpEEyjEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Soo6gkyjEeObF6ELIGKT-g" points="[8, 2, -488, 0]$[496, 2, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sow2UEyjEeObF6ELIGKT-g" id="(0.9550561797752809,0.37)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sow2UUyjEeObF6ELIGKT-g" id="(0.0,0.39823008849557523)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_cXw1wEykEeObF6ELIGKT-g" type="4007" source="_a8t0EEykEeObF6ELIGKT-g" target="_dK2xgEyiEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cXyD4EykEeObF6ELIGKT-g" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cXyq8EykEeObF6ELIGKT-g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cXyq8UykEeObF6ELIGKT-g" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cXyq8kykEeObF6ELIGKT-g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_cXw1wUykEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_cXr9QEykEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cXw1wkykEeObF6ELIGKT-g" points="[7, 7, -506, 0]$[513, 7, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cX-RIEykEeObF6ELIGKT-g" id="(0.9593023255813954,0.35)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cX-RIUykEeObF6ELIGKT-g" id="(0.0,0.3888888888888889)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uEIXkEypEeObF6ELIGKT-g" type="4007" source="_l9pYoEypEeObF6ELIGKT-g" target="_qwHCEEypEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uEJlsEypEeObF6ELIGKT-g" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uEJlsUypEeObF6ELIGKT-g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uEJlskypEeObF6ELIGKT-g" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uEJls0ypEeObF6ELIGKT-g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uEIXkUypEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_uEDfEEypEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uEIXkkypEeObF6ELIGKT-g" points="[4, 1, -403, 0]$[405, 0, -2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uENQEEypEeObF6ELIGKT-g" id="(0.9849056603773585,0.52)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uENQEUypEeObF6ELIGKT-g" id="(0.011320754716981131,0.6371681415929203)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NrFIcEywEeObF6ELIGKT-g" type="4007" source="_H5OekEywEeObF6ELIGKT-g" target="_qwHCEEypEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NrFIc0ywEeObF6ELIGKT-g" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NrFvgEywEeObF6ELIGKT-g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NrFvgUywEeObF6ELIGKT-g" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NrFvgkywEeObF6ELIGKT-g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NrFIcUywEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_NrCFIEywEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NrFIckywEeObF6ELIGKT-g" points="[9, -3, -405, 127]$[409, -129, -5, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NrIy0EywEeObF6ELIGKT-g" id="(0.9713375796178344,0.3)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NrIy0UywEeObF6ELIGKT-g" id="(0.019230769230769232,0.9203539823008849)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_WYXosEywEeObF6ELIGKT-g" type="4001" source="_H5OekEywEeObF6ELIGKT-g" target="_l9pYoEypEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_WYYPwEywEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WYYPwUywEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WYYPwkywEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WYYPw0ywEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WYYPxEywEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WYYPxUywEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WYYPxkywEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WYYPx0ywEeObF6ELIGKT-g" x="-12" y="6"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WYYPyEywEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WYYPyUywEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WYYPykywEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WYYPy0ywEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_WYXosUywEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_WYWakEywEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WYXoskywEeObF6ELIGKT-g" points="[1, -2, 0, 56]$[1, -54, 0, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WYs_4EywEeObF6ELIGKT-g" id="(0.5254777070063694,0.02)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WYs_4UywEeObF6ELIGKT-g" id="(0.5132075471698113,0.975609756097561)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gjq_EEywEeObF6ELIGKT-g" type="4001" source="_H5OekEywEeObF6ELIGKT-g" target="_LY9nwEyjEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gjsNMEywEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gjs0QEywEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gjs0QUywEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gjs0QkywEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gjs0Q0ywEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gjtbUEywEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gjtbUUywEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gjtbUkywEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gjtbU0ywEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gjuCYEywEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gjuCYUywEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gjuCYkywEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_gjq_EUywEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_gjmtoEywEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gjq_EkywEeObF6ELIGKT-g" points="[-3, 0, -59, 308]$[-45, 0, -101, 308]$[-45, -308, -101, 0]$[51, -308, -5, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gj62sEywEeObF6ELIGKT-g" id="(0.009554140127388535,0.07)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gj62sUywEeObF6ELIGKT-g" id="(0.028089887640449437,0.77)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_uPIkIEydEeObF6ELIGKT-g" type="PapyrusUMLClassDiagram" name="RegExpSynchronizer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_z8-QsEydEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z9As8EydEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z9As8UydEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z9BUAEydEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z9BUAUydEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z9BUAkydEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z9BUA0ydEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z9BUBEydEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z9BUBUydEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z9BUBkydEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z9BUB0ydEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z9BUCEydEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z9BUCUydEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z9B7EEydEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z9B7EUydEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z9B7EkydEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z9B7E0ydEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z9B7FEydEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z9B7FUydEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z9B7FkydEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z9B7F0ydEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z9B7GEydEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z9B7GUydEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_z8UwcEydEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z8-QsUydEeObF6ELIGKT-g" x="474" y="54" width="229" height="835"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AeBEgEygEeObF6ELIGKT-g" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AeCSoEygEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AeCSoUygEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AeC5sEygEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AeC5sUygEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AeC5skygEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AeC5s0ygEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AeDgwEygEeObF6ELIGKT-g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AeDgwUygEeObF6ELIGKT-g" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AeDgwkygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AeDgw0ygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AeDgxEygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AeDgxUygEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AeDgxkygEeObF6ELIGKT-g" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_PEsaAEygEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_JZ7ioNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PEsaAUygEeObF6ELIGKT-g" x="31" y="5"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_PEzuwEygEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_Ft6TwN9mEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PEzuwUygEeObF6ELIGKT-g" x="31" y="5"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AeEH0EygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AeEH0UygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AeEH0kygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AeEH00ygEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AeEH1EygEeObF6ELIGKT-g" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AeEH1UygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AeEH1kygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AeEH10ygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AeEH2EygEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_HJLoANNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AeBEgUygEeObF6ELIGKT-g" x="918" y="996"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CpYI0EygEeObF6ELIGKT-g" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CpYI0kygEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CpYI00ygEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CpYv4EygEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CpYv4UygEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CpYv4kygEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CpYv40ygEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CpYv5EygEeObF6ELIGKT-g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CpYv5UygEeObF6ELIGKT-g" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CpYv5kygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CpYv50ygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CpYv6EygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CpYv6UygEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CpYv6kygEeObF6ELIGKT-g" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_UbtiAEygEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_h69BYNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UbtiAUygEeObF6ELIGKT-g" x="56" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UbzooEygEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_iGe78NNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UbzooUygEeObF6ELIGKT-g" x="56" y="15"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Ub6WUEygEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_iKn1ENNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ub6WUUygEeObF6ELIGKT-g" x="56" y="15"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CpYv60ygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CpYv7EygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CpYv7UygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CpYv7kygEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CpYv70ygEeObF6ELIGKT-g" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CpYv8EygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CpYv8UygEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CpYv8kygEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CpYv80ygEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_OS41oNNqEeKwWoA8j13SIg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CpYI0UygEeObF6ELIGKT-g" x="912" y="234"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LOaSsEylEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LObg0EylEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LObg0UylEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LObg0kylEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LObg00ylEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LOcH4EylEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LOcH4UylEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LOcH4kylEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LOcH40ylEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LOcH5EylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LOcH5UylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LOcH5kylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LOcH50ylEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LOcu8EylEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LOcu8UylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LOcu8kylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LOcu80ylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LOcu9EylEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LOcu9UylEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LOcu9kylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LOcu90ylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LOcu-EylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LOcu-UylEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_t0NNoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LOaSsUylEeObF6ELIGKT-g" x="252" y="342"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NvUJMEylEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NvVXUEylEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NvVXUUylEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NvVXUkylEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NvVXU0ylEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NvV-YEylEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NvV-YUylEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NvV-YkylEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NvV-Y0ylEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NvV-ZEylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NvV-ZUylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NvV-ZkylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NvV-Z0ylEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NvWlcEylEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NvWlcUylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NvWlckylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NvWlc0ylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NvWldEylEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NvWldUylEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NvWldkylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NvWld0ylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NvWleEylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NvWleUylEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_rqknoM9UEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NvUJMUylEeObF6ELIGKT-g" x="42" y="342"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_iIwHgEylEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iIwukEylEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iIxVoEylEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iIxVoUylEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iIxVokylEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iIxVo0ylEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iIx8sEylEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iIx8sUylEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iIx8skylEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iIx8s0ylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iIx8tEylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iIx8tUylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iIx8tkylEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iIyjwEylEeObF6ELIGKT-g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_32niIEylEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_32mUAEylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32niIUylEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_52JJ4EylEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_52Ii0EylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_52JJ4UylEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_71Zr4EylEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_71ZE0EylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_71Zr4UylEeObF6ELIGKT-g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iIyjwUylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iIyjwkylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iIyjw0ylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iIyjxEylEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iIyjxUylEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iIyjxkylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iIyjx0ylEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iIyjyEylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iIyjyUylEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_iIr2EEylEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iIwHgUylEeObF6ELIGKT-g" x="1308" y="630" width="349"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NNIMsEymEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NNIMskymEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NNIMs0ymEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NNIMtEymEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NNIMtUymEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NNIMtkymEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NNIzwEymEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NNIzwUymEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NNIzwkymEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NNIzw0ymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NNIzxEymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NNIzxUymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NNIzxkymEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NNIzx0ymEeObF6ELIGKT-g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_KiEQcEytEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_KiB0MEytEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KiEQcUytEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_MEEOsEytEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_MECZgEytEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MEEOsUytEeObF6ELIGKT-g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NNIzyEymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NNIzyUymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NNIzykymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NNIzy0ymEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NNIzzEymEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NNIzzUymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NNIzzkymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NNIzz0ymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NNIz0EymEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_NNG-kEymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NNIMsUymEeObF6ELIGKT-g" x="918" y="612" width="211"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_PH4CIEymEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PH5QQEymEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PH5QQUymEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PH5QQkymEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PH5QQ0ymEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PH53UEymEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PH53UUymEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PH53UkymEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PH53U0ymEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PH53VEymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PH53VUymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PH53VkymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PH53V0ymEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PH6eYEymEeObF6ELIGKT-g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_1alD4EytEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_xe-J8EytEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1alD4UytEeObF6ELIGKT-g" x="94" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1arKgEytEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_xe-J8UytEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1arKgUytEeObF6ELIGKT-g" x="94" y="10"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PH6eYUymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PH6eYkymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PH6eY0ymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PH6eZEymEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PH6eZUymEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PH6eZkymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PH6eZ0ymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PH6eaEymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PH6eaUymEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_PHzwsEymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PH4CIUymEeObF6ELIGKT-g" x="918" y="786" width="307"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hYeEoEymEeObF6ELIGKT-g" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hYfSwEymEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hYfSwUymEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hYfSwkymEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hYf50EymEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hYf50UymEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hYf50kymEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hYf500ymEeObF6ELIGKT-g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hYgg4EymEeObF6ELIGKT-g" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hYgg4UymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hYgg4kymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hYgg40ymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hYgg5EymEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hYgg5UymEeObF6ELIGKT-g" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_psa30EymEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_psYbkEymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_psa30UymEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vtjT0EymEeObF6ELIGKT-g" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_vtheoEymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vtjT0UymEeObF6ELIGKT-g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hYgg5kymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hYgg50ymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hYgg6EymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hYgg6UymEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hYhH8EymEeObF6ELIGKT-g" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hYhH8UymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hYhH8kymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hYhH80ymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hYhH9EymEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_hYZzMEymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hYeEoUymEeObF6ELIGKT-g" x="912" y="426" width="331"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7ths0EymEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7ti68EymEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7ti68UymEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7tjiAEymEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7tjiAUymEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7tjiAkymEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7tjiA0ymEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7tjiBEymEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7tkJEEymEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7tkJEUymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7tkJEkymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7tkJE0ymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7tkJFEymEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7tkJFUymEeObF6ELIGKT-g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_LTBowEysEeObF6ELIGKT-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_LTBBsEysEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LTBowUysEeObF6ELIGKT-g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7tkJFkymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7tkJF0ymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7tkJGEymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7tkJGUymEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7tkwIEymEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7tkwIUymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7tkwIkymEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7tkwI0ymEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7tkwJEymEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_u6-HIM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ths0UymEeObF6ELIGKT-g" x="1380" y="468"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_i4LxoEyrEeObF6ELIGKT-g" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_i4M_wEyrEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_i4M_wUyrEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_i4M_wkyrEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_i4Nm0EyrEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_i4Nm0UyrEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_i4Nm0kyrEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_i4Nm00yrEeObF6ELIGKT-g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_i4Nm1EyrEeObF6ELIGKT-g" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_i4Nm1UyrEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_i4Nm1kyrEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_i4Nm10yrEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i4Nm2EyrEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_i4ON4EyrEeObF6ELIGKT-g" type="7007">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_i4ON4UyrEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_i4ON4kyrEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_i4ON40yrEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i4ON5EyrEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_i4O08EyrEeObF6ELIGKT-g" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_i4O08UyrEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_i4O08kyrEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_i4O080yrEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i4O09EyrEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_qwDXsEypEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i4LxoUyrEeObF6ELIGKT-g" x="-6" y="624"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_H2io4EyuEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H2jP8EyuEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H2j3AEyuEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H2j3AUyuEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H2j3AkyuEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H2j3A0yuEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H2j3BEyuEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H2keEEyuEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H2keEUyuEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H2keEkyuEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_H2keE0yuEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_H2keFEyuEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H2keFUyuEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H2lFIEyuEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H2lFIUyuEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_H2lFIkyuEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_H2lFI0yuEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H2lFJEyuEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H2lFJUyuEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H2lFJkyuEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_H2lFJ0yuEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_H2lFKEyuEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H2lFKUyuEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_JwRLoEyjEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H2io4UyuEeObF6ELIGKT-g" x="1134" y="995"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rezsYEyvEeObF6ELIGKT-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_re0TcEyvEeObF6ELIGKT-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_re0TcUyvEeObF6ELIGKT-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_re0TckyvEeObF6ELIGKT-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_re0Tc0yvEeObF6ELIGKT-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_re0TdEyvEeObF6ELIGKT-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_re0TdUyvEeObF6ELIGKT-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_re0TdkyvEeObF6ELIGKT-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_re0Td0yvEeObF6ELIGKT-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_re0TeEyvEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_re0TeUyvEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_re0TekyvEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_re0Te0yvEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_re0TfEyvEeObF6ELIGKT-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_re0TfUyvEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_re0TfkyvEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_re0Tf0yvEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_re0TgEyvEeObF6ELIGKT-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_re06gEyvEeObF6ELIGKT-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_re06gUyvEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_re06gkyvEeObF6ELIGKT-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_re06g0yvEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_re06hEyvEeObF6ELIGKT-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_rezFUEyvEeObF6ELIGKT-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rezsYUyvEeObF6ELIGKT-g" x="-90" y="780" width="350"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_uPIkIUydEeObF6ELIGKT-g"/>
+ <element xmi:type="uml:Package" href="architecture-v3.uml#_IygSQLZKEeK8zaQi-hvdlw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_YeFyUEygEeObF6ELIGKT-g" type="4001" source="_PH4CIEymEeObF6ELIGKT-g" target="_AeBEgEygEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YeHngEygEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YeHngUygEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YeHngkygEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YeHng0ygEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YeIOkEygEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YeIOkUygEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YeIOkkygEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YeI1oEygEeObF6ELIGKT-g" x="-1" y="101"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YeI1oUygEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YeI1okygEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YeI1o0ygEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YeJcsEygEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YeFyUUygEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_YeA50EygEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YeFyUkygEeObF6ELIGKT-g" points="[4, -7, -156, 0]$[147, -9, -13, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YeWRAEygEeObF6ELIGKT-g" id="(0.08962264150943396,0.967741935483871)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YeWRAUygEeObF6ELIGKT-g" id="(0.14285714285714285,0.013888888888888888)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZFLAcEygEeObF6ELIGKT-g" type="4001" source="_z8-QsEydEeObF6ELIGKT-g" target="_CpYI0EygEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZFMOkEygEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFMOkUygEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZFMOkkygEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFMOk0ygEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZFMOlEygEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFMOlUygEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZFMOlkygEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFMOl0ygEeObF6ELIGKT-g" x="-64" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZFM1oEygEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFM1oUygEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZFM1okygEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFM1o0ygEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZFLAcUygEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_ZFGvAEygEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZFLAckygEeObF6ELIGKT-g" points="[7, 4, -150, 0]$[150, 3, -7, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZFTjUEygEeObF6ELIGKT-g" id="(0.9779005524861878,0.3065868263473054)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZFTjUUygEeObF6ELIGKT-g" id="(0.021212121212121213,0.45121951219512196)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Q_dEQEylEeObF6ELIGKT-g" type="4001" source="_LOaSsEylEeObF6ELIGKT-g" target="_NvUJMEylEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q_e5cEylEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Q_e5cUylEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q_e5ckylEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Q_fggEylEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q_fggUylEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Q_fggkylEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q_fgg0ylEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Q_gHkEylEeObF6ELIGKT-g" x="-11" y="22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q_gHkUylEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Q_gHkkylEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q_gHk0ylEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Q_guoEylEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Q_dEQUylEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_3h0tAM9VEeKO_rl5MA6s9A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Q_dEQkylEeObF6ELIGKT-g" points="[1, -50, -9, 218]$[8, -218, -2, 50]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ULBBUEylEeObF6ELIGKT-g" type="4001" source="_z8-QsEydEeObF6ELIGKT-g" target="_LOaSsEylEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ULBBU0ylEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ULBBVEylEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ULBBVUylEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ULBBVkylEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ULBBV0ylEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ULBoYEylEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ULBoYUylEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ULBoYkylEeObF6ELIGKT-g" x="-17" y="22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ULBoY0ylEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ULBoZEylEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ULBoZUylEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ULBoZkylEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ULBBUUylEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_UK_MI0ylEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ULBBUkylEeObF6ELIGKT-g" points="[-9, -4, 150, 0]$[-155, -5, 4, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ULIWEEylEeObF6ELIGKT-g" id="(0.055248618784530384,0.4338138925294889)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ULIWEUylEeObF6ELIGKT-g" id="(0.96,0.44)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_9fKpkEymEeObF6ELIGKT-g" type="4001" source="_iIwHgEylEeObF6ELIGKT-g" target="_7ths0EymEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_9fL3sEymEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9fMewEymEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9fMewUymEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9fMewkymEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9fMew0ymEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9fNF0EymEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9fNF0UymEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9fNF0kymEeObF6ELIGKT-g" x="-9" y="62"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9fNF00ymEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9fNs4EymEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9fNs4UymEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9fNs4kymEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_9fKpkUymEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_9fFKAEymEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9fKpkkymEeObF6ELIGKT-g" points="[-9, -5, 0, 70]$[-10, -67, -1, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9fcWYEymEeObF6ELIGKT-g" id="(0.4326647564469914,0.034722222222222224)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9fcWYUymEeObF6ELIGKT-g" id="(0.46,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JsosAEynEeObF6ELIGKT-g" type="4002" source="_NNIMsEymEeObF6ELIGKT-g" target="_iIwHgEylEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JsqhMEynEeObF6ELIGKT-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JsqhMUynEeObF6ELIGKT-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JsosAUynEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_JsQRgEynEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JsosAkynEeObF6ELIGKT-g" points="[9, 2, -180, -44]$[188, 45, -1, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JsxO4EynEeObF6ELIGKT-g" id="(0.957345971563981,0.42)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JsxO4UynEeObF6ELIGKT-g" id="(0.0028653295128939827,0.4027777777777778)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KWYzoEynEeObF6ELIGKT-g" type="4002" source="_PH4CIEymEeObF6ELIGKT-g" target="_iIwHgEylEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KWao0EynEeObF6ELIGKT-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KWao0UynEeObF6ELIGKT-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_KWYzoUynEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_KWW-cEynEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KWYzokynEeObF6ELIGKT-g" points="[7, -2, -188, 41]$[185, -43, -10, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KWjywEynEeObF6ELIGKT-g" id="(0.9669811320754716,0.36)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KWjywUynEeObF6ELIGKT-g" id="(0.02865329512893983,0.5833333333333334)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_S_hzsEynEeObF6ELIGKT-g" type="4001" source="_z8-QsEydEeObF6ELIGKT-g" target="_hYeEoEymEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_S_iawEynEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S_iawUynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S_iawkynEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S_iaw0ynEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S_iaxEynEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S_jB0EynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S_jB0UynEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S_jB0kynEeObF6ELIGKT-g" x="-58" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S_jB00ynEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S_jB1EynEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S_jB1UynEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S_jB1kynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_S_hzsUynEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_S_btEEynEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_S_hzskynEeObF6ELIGKT-g" points="[3, 6, -237, 0]$[236, 5, -4, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S_qWkEynEeObF6ELIGKT-g" id="(0.9779005524861878,0.5245508982035928)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S_qWkUynEeObF6ELIGKT-g" id="(0.012084592145015106,0.4305555555555556)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_m-nYUEynEeObF6ELIGKT-g" type="4001" source="_z8-QsEydEeObF6ELIGKT-g" target="_PH4CIEymEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_m-pNgEynEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m-pNgUynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m-pNgkynEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m-p0kEynEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m-p0kUynEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m-p0kkynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m-p0k0ynEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m-qboEynEeObF6ELIGKT-g" x="-59" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m-qboUynEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m-qbokynEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m-qbo0ynEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m-rCsEynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_m-nYUUynEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_m-if0EynEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m-nYUkynEeObF6ELIGKT-g" points="[6, -2, -248, 0]$[245, -6, -9, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m-zlkEynEeObF6ELIGKT-g" id="(0.9668508287292817,0.8872870249017037)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m-zlkUynEeObF6ELIGKT-g" id="(0.04245283018867924,0.08)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_pSwlMEynEeObF6ELIGKT-g" type="4001" source="_z8-QsEydEeObF6ELIGKT-g" target="_PH4CIEymEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pSyaYEynEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pSyaYUynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pSyaYkynEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pSyaY0ynEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pSzBcEynEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pSzBcUynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pSzBckynEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pSzBc0ynEeObF6ELIGKT-g" x="-49" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pSzogEynEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pSzogUynEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pSzogkynEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pS0PkEynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_pSwlMUynEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_pSsTwEynEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pSwlMkynEeObF6ELIGKT-g" points="[4, 3, -245, 0]$[243, 4, -6, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pS_OsEynEeObF6ELIGKT-g" id="(0.9834254143646409,0.9760479041916168)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pS_OsUynEeObF6ELIGKT-g" id="(0.02830188679245283,0.7)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0WfYYEynEeObF6ELIGKT-g" type="4001" source="_z8-QsEydEeObF6ELIGKT-g" target="_NNIMsEymEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0WgmgEynEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0WgmgUynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0WgmgkynEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0WhNkEynEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0WhNkUynEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0WhNkkynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Wh0oEynEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Wh0oUynEeObF6ELIGKT-g" x="-42" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Wh0okynEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Wh0o0ynEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0WibsEynEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0WibsUynEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0WfYYUynEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_0Waf4EynEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0WfYYkynEeObF6ELIGKT-g" points="[2, 4, -241, 0]$[241, 3, -2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0WxsQEynEeObF6ELIGKT-g" id="(0.988950276243094,0.7365661861074705)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0WxsQUynEeObF6ELIGKT-g" id="(0.004739336492890996,0.4032258064516129)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_x4gWMEyrEeObF6ELIGKT-g" type="4001" source="_NNIMsEymEeObF6ELIGKT-g" target="_i4LxoEyrEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_x4hkUEyrEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_x4hkUUyrEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_x4iLYEyrEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_x4iLYUyrEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_x4iLYkyrEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_x4iycEyrEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_x4iycUyrEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_x4iyckyrEeObF6ELIGKT-g" x="-32" y="43"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_x4iyc0yrEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_x4iydEyrEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_x4jZgEyrEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_x4jZgUyrEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_x4gWMUyrEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_x4cEwEyrEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_x4gWMkyrEeObF6ELIGKT-g" points="[-9, -5, 668, 0]$[-129, -5, 548, 0]$[-673, -5, 4, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_x4-QQEyrEeObF6ELIGKT-g" id="(0.04265402843601896,0.74)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_x4-3UEyrEeObF6ELIGKT-g" id="(0.9846153846153847,0.6548672566371682)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_itvxUEytEeObF6ELIGKT-g" type="4001" source="_NNIMsEymEeObF6ELIGKT-g" target="_rezsYEyvEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_itxmgEytEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_itxmgUytEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_itxmgkytEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_itxmg0ytEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ityNkEytEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ityNkUytEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ityNkkytEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ityNk0ytEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ityNlEytEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ity0oEytEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ity0oUytEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ity0okytEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_itvxUUytEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_itrf4EytEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_itvxUkytEeObF6ELIGKT-g" points="[-3, 0, 676, -82]$[-671, 80, 8, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iuA3EEytEeObF6ELIGKT-g" id="(0.014218009478672985,0.8629032258064516)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iuA3EUytEeObF6ELIGKT-g" id="(0.9857142857142858,0.45)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_I_DJEEyuEeObF6ELIGKT-g" type="4001" source="_PH4CIEymEeObF6ELIGKT-g" target="_H2io4EyuEeObF6ELIGKT-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_I_EXMEyuEeObF6ELIGKT-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I_E-QEyuEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I_E-QUyuEeObF6ELIGKT-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I_E-QkyuEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I_E-Q0yuEeObF6ELIGKT-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I_FlUEyuEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I_FlUUyuEeObF6ELIGKT-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I_FlUkyuEeObF6ELIGKT-g" x="-31" y="14"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I_GMYEyuEeObF6ELIGKT-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I_GMYUyuEeObF6ELIGKT-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I_GzcEyuEeObF6ELIGKT-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_I_GzcUyuEeObF6ELIGKT-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_I_DJEUyuEeObF6ELIGKT-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_I--3oEyuEeObF6ELIGKT-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_I_DJEkyuEeObF6ELIGKT-g" points="[2, 8, -29, -85]$[31, 93, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_I_fN8EyuEeObF6ELIGKT-g" id="(0.7296416938110749,0.9758064516129032)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_I_fN8UyuEeObF6ELIGKT-g" id="(0.06741573033707865,0.0)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_harzYFzGEeOeP67GJGKDkA" type="PapyrusUMLClassDiagram" name="regexp 2" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_q38YAFzGEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q38YAlzGEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q38YA1zGEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q38YBFzGEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q38YBVzGEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q38YBlzGEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q38YB1zGEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q38YCFzGEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q38YCVzGEeOeP67GJGKDkA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q38YClzGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q38YC1zGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q38YDFzGEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q38YDVzGEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q38YDlzGEeOeP67GJGKDkA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q38YD1zGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q38YEFzGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q38YEVzGEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q38YElzGEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q38YE1zGEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q38YFFzGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q38YFVzGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q38YFlzGEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q38YF1zGEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_u6-HIM-xEeKO_rl5MA6s9A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q38YAVzGEeOeP67GJGKDkA" x="36" y="240"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_sdCGgFzGEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sdCGglzGEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sdCGg1zGEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sdCGhFzGEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sdCGhVzGEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sdCGhlzGEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sdCGh1zGEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sdCGiFzGEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sdCGiVzGEeOeP67GJGKDkA" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_GIp6sFzIEeOeP67GJGKDkA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="architecture-v3.uml#_GIXm0FzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GIp6sVzIEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ISLL8VzIEeOeP67GJGKDkA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="architecture-v3.uml#_ISLL8FzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ISLL8lzIEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_oFho0FzIEeOeP67GJGKDkA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="architecture-v3.uml#_oFbiMFzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oFho0VzIEeOeP67GJGKDkA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sdCGilzGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sdCGi1zGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sdCGjFzGEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sdCGjVzGEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sdCGjlzGEeOeP67GJGKDkA" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_dUehEFzIEeOeP67GJGKDkA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_dUYacFzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dUehEVzIEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_f2mfkFzIEeOeP67GJGKDkA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_f2gY8FzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f2mfkVzIEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kFdssVzIEeOeP67GJGKDkA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_kFdssFzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kFdsslzIEeOeP67GJGKDkA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sdCGj1zGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sdCGkFzGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sdCGkVzGEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sdCGklzGEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sdCGk1zGEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sdCGlFzGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sdCGlVzGEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sdCGllzGEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sdCGl1zGEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_sc15QFzGEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sdCGgVzGEeOeP67GJGKDkA" x="402" y="198" width="223" height="196"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rYenUFzIEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rYenUlzIEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rYenU1zIEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rYenVFzIEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rYenVVzIEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rYenVlzIEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rYenV1zIEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rYenWFzIEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rYenWVzIEeOeP67GJGKDkA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rYenWlzIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rYenW1zIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rYenXFzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rYenXVzIEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rYenXlzIEeOeP67GJGKDkA" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_rjKtAFzLEeOeP67GJGKDkA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_rjEmYFzLEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rjKtAVzLEeOeP67GJGKDkA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rYenX1zIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rYenYFzIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rYenYVzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rYenYlzIEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rYenY1zIEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rYenZFzIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rYenZVzIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rYenZlzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rYenZ1zIEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_rYYgsFzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rYenUVzIEeOeP67GJGKDkA" x="360" y="480" width="309" height="103"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4ZF98VzIEeOeP67GJGKDkA" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4ZF981zIEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4ZF99FzIEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4ZF99VzIEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4ZF99lzIEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4ZMEkFzIEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4ZMEkVzIEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4ZMEklzIEeOeP67GJGKDkA" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4ZMEk1zIEeOeP67GJGKDkA" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4ZMElFzIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4ZMElVzIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4ZMEllzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ZMEl1zIEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4ZMEmFzIEeOeP67GJGKDkA" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="__cOCcFzIEeOeP67GJGKDkA" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#__cB1MFzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__cOCcVzIEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fsK7wFzJEeOeP67GJGKDkA" type="3007" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_fsE1IFzJEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fsK7wVzJEeOeP67GJGKDkA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4ZMEmVzIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4ZMEmlzIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4ZMEm1zIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ZMEnFzIEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4ZMEnVzIEeOeP67GJGKDkA" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4ZMEnlzIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4ZMEn1zIEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4ZMEoFzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ZMEoVzIEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_4ZF98FzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ZF98lzIEeOeP67GJGKDkA" x="744" y="24" width="166" height="127"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hd8bYVzJEeOeP67GJGKDkA" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hd8bY1zJEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hd8bZFzJEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hd8bZVzJEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hd8bZlzJEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hd8bZ1zJEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hd8baFzJEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hd8baVzJEeOeP67GJGKDkA" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hd8balzJEeOeP67GJGKDkA" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hd8ba1zJEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hd8bbFzJEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hd8bbVzJEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hd8bblzJEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hd8bb1zJEeOeP67GJGKDkA" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_-Vl8IVzJEeOeP67GJGKDkA" type="3007" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MkylwFzKEeOeP67GJGKDkA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OyKcQFzKEeOeP67GJGKDkA" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_-Vl8IFzJEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-Vl8IlzJEeOeP67GJGKDkA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hd8bcFzJEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hd8bcVzJEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hd8bclzJEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hd8bc1zJEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_heCiAFzJEeOeP67GJGKDkA" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_heCiAVzJEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_heCiAlzJEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_heCiA1zJEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_heCiBFzJEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_hd8bYFzJEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hd8bYlzJEeOeP67GJGKDkA" x="354" y="24"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AipCgFzKEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AipCglzKEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AipCg1zKEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AipChFzKEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AipChVzKEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AipChlzKEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AipCh1zKEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AipCiFzKEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AipCiVzKEeOeP67GJGKDkA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AipCilzKEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AipCi1zKEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AipCjFzKEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AipCjVzKEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AipCjlzKEeOeP67GJGKDkA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AipCj1zKEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AipCkFzKEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AipCkVzKEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AipCklzKEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AipCk1zKEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AipClFzKEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AipClVzKEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AipCllzKEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AipCl1zKEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_Aii74FzKEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AipCgVzKEeOeP67GJGKDkA" x="978" y="24" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SOF7IVzLEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SOMBwFzLEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SOMBwVzLEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SOMBwlzLEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SOMBw1zLEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SOMBxFzLEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SOMBxVzLEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SOMBxlzLEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SOMBx1zLEeOeP67GJGKDkA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SOMByFzLEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SOMByVzLEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SOMBylzLEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SOMBy1zLEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SOMBzFzLEeOeP67GJGKDkA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SOMBzVzLEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SOMBzlzLEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SOMBz1zLEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SOMB0FzLEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SOMB0VzLEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SOMB0lzLEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SOMB01zLEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SOMB1FzLEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SOMB1VzLEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_SOF7IFzLEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SOF7IlzLEeOeP67GJGKDkA" x="774" y="486"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mPYCsFzMEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mPYCslzMEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mPYCs1zMEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mPYCtFzMEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mPYCtVzMEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mPYCtlzMEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mPYCt1zMEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mPYCuFzMEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mPYCuVzMEeOeP67GJGKDkA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mPYCulzMEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mPYCu1zMEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mPYCvFzMEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mPYCvVzMEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mPYCvlzMEeOeP67GJGKDkA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mPYCv1zMEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mPYCwFzMEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mPYCwVzMEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mPYCwlzMEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mPYCw1zMEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mPYCxFzMEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mPYCxVzMEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mPYCxlzMEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mPYCx1zMEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_j52EYNIUEeKovM8ingMMQQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mPYCsVzMEeOeP67GJGKDkA" x="864" y="228" width="175"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_G6_u4FzOEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G6_u4lzOEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G6_u41zOEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G6_u5FzOEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G6_u5VzOEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G6_u5lzOEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G6_u51zOEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G6_u6FzOEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G6_u6VzOEeOeP67GJGKDkA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G6_u6lzOEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G6_u61zOEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G6_u7FzOEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G6_u7VzOEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G6_u7lzOEeOeP67GJGKDkA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G6_u71zOEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G6_u8FzOEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G6_u8VzOEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G6_u8lzOEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G6_u81zOEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G6_u9FzOEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G6_u9VzOEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G6_u9lzOEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G6_u91zOEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_G65oQFzOEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G6_u4VzOEeOeP67GJGKDkA" x="702" y="168" height="49"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_harzYVzGEeOeP67GJGKDkA"/>
+ <element xmi:type="uml:Model" href="architecture-v3.uml#_bAQtoFzGEeOeP67GJGKDkA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_pR38pFzHEeOeP67GJGKDkA" type="4001" source="_q38YAFzGEeOeP67GJGKDkA" target="_sdCGgFzGEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pR38p1zHEeOeP67GJGKDkA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pR38qFzHEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pR38qVzHEeOeP67GJGKDkA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pR38qlzHEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pR38q1zHEeOeP67GJGKDkA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pR38rFzHEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pR38rVzHEeOeP67GJGKDkA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pR38rlzHEeOeP67GJGKDkA" x="-48" y="25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pR38r1zHEeOeP67GJGKDkA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pR38sFzHEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pR38sVzHEeOeP67GJGKDkA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pR38slzHEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_pR38pVzHEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_pR38oFzHEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pR38plzHEeOeP67GJGKDkA" points="[6, 5, -214, 0]$[212, 5, -8, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pSEJ4FzHEeOeP67GJGKDkA" id="(0.94,0.52)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pSEJ4VzHEeOeP67GJGKDkA" id="(0.05517241379310345,0.51)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_vW8LgFzJEeOeP67GJGKDkA" type="4003" source="_sdCGgFzGEeOeP67GJGKDkA" target="_hd8bYVzJEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vW8Lg1zJEeOeP67GJGKDkA" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vW8LhFzJEeOeP67GJGKDkA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vW8LhVzJEeOeP67GJGKDkA" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vW8LhlzJEeOeP67GJGKDkA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_vW8LgVzJEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="architecture-v3.uml#_vWp3oFzJEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vW8LglzJEeOeP67GJGKDkA" points="[-3, -10, 0, 61]$[-5, -65, -2, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vXCSIFzJEeOeP67GJGKDkA" id="(0.4304932735426009,0.05102040816326531)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vXCSIVzJEeOeP67GJGKDkA" id="(0.45110410094637227,0.9838709677419355)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Yg8ZQFzLEeOeP67GJGKDkA" type="4007" source="_4ZF98VzIEeOeP67GJGKDkA" target="_hd8bYVzJEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Yg8ZQ1zLEeOeP67GJGKDkA" visible="false" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Yg8ZRFzLEeOeP67GJGKDkA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Yg8ZRVzLEeOeP67GJGKDkA" visible="false" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Yg8ZRlzLEeOeP67GJGKDkA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Yg8ZQVzLEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_Yg2SoFzLEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Yg8ZQlzLEeOeP67GJGKDkA" points="[-1, 4, 78, 0]$[-74, 3, 5, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YhCf4FzLEeOeP67GJGKDkA" id="(0.006024096385542169,0.4094488188976378)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YhCf4VzLEeOeP67GJGKDkA" id="(0.9842271293375394,0.45161290322580644)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZvbloVzLEeOeP67GJGKDkA" type="4007" source="_4ZF98VzIEeOeP67GJGKDkA" target="_AipCgFzKEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZvhsQFzLEeOeP67GJGKDkA" visible="false" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZvhsQVzLEeOeP67GJGKDkA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZvhsQlzLEeOeP67GJGKDkA" visible="false" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZvhsQ1zLEeOeP67GJGKDkA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZvblolzLEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_ZvbloFzLEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Zvblo1zLEeOeP67GJGKDkA" points="[9, -7, -69, 0]$[77, -7, -1, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zvny4FzLEeOeP67GJGKDkA" id="(0.9457831325301205,0.4645669291338583)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zvny4VzLEeOeP67GJGKDkA" id="(0.007194244604316547,0.5714285714285714)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bBitwVzLEeOeP67GJGKDkA" type="4007" source="_rYenUFzIEeOeP67GJGKDkA" target="_SOF7IVzLEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bBo0YFzLEeOeP67GJGKDkA" visible="false" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bBo0YVzLEeOeP67GJGKDkA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bBo0YlzLEeOeP67GJGKDkA" visible="false" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bBo0Y1zLEeOeP67GJGKDkA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bBitwlzLEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_bBitwFzLEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bBitw1zLEeOeP67GJGKDkA" points="[3, -1, -105, 0]$[108, -1, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bBu7AFzLEeOeP67GJGKDkA" id="(0.9902912621359223,0.49514563106796117)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bBu7AVzLEeOeP67GJGKDkA" id="(0.0,0.44)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_dTW_YFzLEeOeP67GJGKDkA" type="4001" source="_sdCGgFzGEeOeP67GJGKDkA" target="_rYenUFzIEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_dTW_Y1zLEeOeP67GJGKDkA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dTW_ZFzLEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dTW_ZVzLEeOeP67GJGKDkA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dTW_ZlzLEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dTW_Z1zLEeOeP67GJGKDkA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dTW_aFzLEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dTW_aVzLEeOeP67GJGKDkA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dTW_alzLEeOeP67GJGKDkA" x="-13" y="166"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dTW_a1zLEeOeP67GJGKDkA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dTW_bFzLEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dTW_bVzLEeOeP67GJGKDkA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dTW_blzLEeOeP67GJGKDkA" x="-7" y="-23"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_dTW_YVzLEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_dTQ4wFzLEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dTW_YlzLEeOeP67GJGKDkA" points="[-1, 5, 0, -41]$[-2, 43, -1, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dTdGAFzLEeOeP67GJGKDkA" id="(0.49327354260089684,0.9744897959183674)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dTdGAVzLEeOeP67GJGKDkA" id="(0.4886731391585761,0.02912621359223301)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_yKcjAFzLEeOeP67GJGKDkA" type="4001" source="_SOF7IVzLEeOeP67GJGKDkA" target="_sdCGgFzGEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_yKcjA1zLEeOeP67GJGKDkA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yKcjBFzLEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yKcjBVzLEeOeP67GJGKDkA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yKcjBlzLEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yKcjB1zLEeOeP67GJGKDkA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yKcjCFzLEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yKcjCVzLEeOeP67GJGKDkA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yKcjClzLEeOeP67GJGKDkA" x="-21" y="21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yKcjC1zLEeOeP67GJGKDkA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yKcjDFzLEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yKcjDVzLEeOeP67GJGKDkA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yKcjDlzLEeOeP67GJGKDkA" x="13" y="-21"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_yKcjAVzLEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_yKWcY1zLEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yKcjAlzLEeOeP67GJGKDkA" points="[6, 0, 188, 149]$[6, -149, 188, 0]$[-173, -149, 9, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yKowQFzLEeOeP67GJGKDkA" id="(0.08571428571428572,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yKowQVzLEeOeP67GJGKDkA" id="(0.9596412556053812,0.7091836734693877)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_oS7O11zMEeOeP67GJGKDkA" type="4001" source="_SOF7IVzLEeOeP67GJGKDkA" target="_mPYCsFzMEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_oTBVcFzMEeOeP67GJGKDkA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oTBVcVzMEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oTBVclzMEeOeP67GJGKDkA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oTBVc1zMEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oTBVdFzMEeOeP67GJGKDkA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oTBVdVzMEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oTBVdlzMEeOeP67GJGKDkA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oTBVd1zMEeOeP67GJGKDkA" x="-18" y="4"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oTBVeFzMEeOeP67GJGKDkA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oTBVeVzMEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oTBVelzMEeOeP67GJGKDkA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oTBVe1zMEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_oS7O2FzMEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_oS7O01zMEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oS7O2VzMEeOeP67GJGKDkA" points="[1, -8, -32, 208]$[25, -166, -8, 50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oTHcEFzMEeOeP67GJGKDkA" id="(0.46785714285714286,0.08)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BqhJMFzNEeOeP67GJGKDkA" id="(0.2342857142857143,0.41)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_o7viV1zMEeOeP67GJGKDkA" type="4001" source="_SOF7IVzLEeOeP67GJGKDkA" target="_mPYCsFzMEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_o71o8FzMEeOeP67GJGKDkA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o71o8VzMEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o71o8lzMEeOeP67GJGKDkA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o71o81zMEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o71o9FzMEeOeP67GJGKDkA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o71o9VzMEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o71o9lzMEeOeP67GJGKDkA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o71o91zMEeOeP67GJGKDkA" x="-18" y="35"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o71o-FzMEeOeP67GJGKDkA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o71o-VzMEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o71o-lzMEeOeP67GJGKDkA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o71o-1zMEeOeP67GJGKDkA" x="6" y="23"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_o7viWFzMEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_o7viU1zMEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_o7viWVzMEeOeP67GJGKDkA" points="[-1, -2, 65, 208]$[-16, -173, 50, 37]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_o8B2MFzMEeOeP67GJGKDkA" id="(0.8214285714285714,0.02)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2nnEFzNEeOeP67GJGKDkA" id="(0.8342857142857143,0.44)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_IDbzEFzNEeOeP67GJGKDkA" type="4001" source="_sdCGgFzGEeOeP67GJGKDkA" target="_mPYCsFzMEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_IDbzE1zNEeOeP67GJGKDkA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IDbzFFzNEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IDbzFVzNEeOeP67GJGKDkA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IDbzFlzNEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IDbzF1zNEeOeP67GJGKDkA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IDbzGFzNEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IDbzGVzNEeOeP67GJGKDkA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IDbzGlzNEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IDbzG1zNEeOeP67GJGKDkA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IDbzHFzNEeOeP67GJGKDkA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IDbzHVzNEeOeP67GJGKDkA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IDbzHlzNEeOeP67GJGKDkA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_IDbzEVzNEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="architecture-v3.uml#_IDVsc1zNEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IDbzElzNEeOeP67GJGKDkA" points="[3, -6, -250, 0]$[242, -11, -11, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IDuG8FzNEeOeP67GJGKDkA" id="(0.9865470852017937,0.2857142857142857)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IDuG8VzNEeOeP67GJGKDkA" id="(0.06285714285714286,0.2)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_PlHmYVzOEeOeP67GJGKDkA" type="4007" source="_IDbzEFzNEeOeP67GJGKDkA" target="_G6_u4FzOEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PlHmZFzOEeOeP67GJGKDkA" visible="false" type="6016">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PlHmZVzOEeOeP67GJGKDkA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PlHmZlzOEeOeP67GJGKDkA" visible="false" type="6017">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PlHmZ1zOEeOeP67GJGKDkA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_PlHmYlzOEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Usage" href="architecture-v3.uml#_PlHmYFzOEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PlHmY1zOEeOeP67GJGKDkA" points="[1, 0, 0, 36]$[0, -31, -1, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PlNtAFzOEeOeP67GJGKDkA" id="(0.5164179104477612,0.47674418604651164)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PlNtAVzOEeOeP67GJGKDkA" id="(0.47,0.9090909090909091)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_HLcwQFzPEeOeP67GJGKDkA" type="PapyrusUMLClassDiagram" name="regexp::ModelChangedNotifier" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_IWgOIFzPEeOeP67GJGKDkA" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IWgOIlzPEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IWgOI1zPEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IWgOJFzPEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IWgOJVzPEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IWgOJlzPEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IWgOJ1zPEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IWgOKFzPEeOeP67GJGKDkA" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IWgOKVzPEeOeP67GJGKDkA" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IWgOKlzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IWgOK1zPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IWgOLFzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IWgOLVzPEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IWgOLlzPEeOeP67GJGKDkA" type="7007">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IWgOL1zPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IWgOMFzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IWgOMVzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IWgOMlzPEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IWmUwFzPEeOeP67GJGKDkA" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IWmUwVzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IWmUwlzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IWmUw1zPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IWmUxFzPEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_4ZF98FzIEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IWgOIVzPEeOeP67GJGKDkA" x="402" y="30"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IwYtwVzPEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IwYtw1zPEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IwYtxFzPEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IwYtxVzPEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IwYtxlzPEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IwYtx1zPEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IwYtyFzPEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IwYtyVzPEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IwYtylzPEeOeP67GJGKDkA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IwYty1zPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IwYtzFzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IwYtzVzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IwYtzlzPEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IwYtz1zPEeOeP67GJGKDkA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IwYt0FzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IwYt0VzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IwYt0lzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IwYt01zPEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Iwe0YFzPEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Iwe0YVzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Iwe0YlzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Iwe0Y1zPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Iwe0ZFzPEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_IwYtwFzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IwYtwlzPEeOeP67GJGKDkA" x="204" y="366" width="194"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_PA97AFzPEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PA97AlzPEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PA97A1zPEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PA97BFzPEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PA97BVzPEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PA97BlzPEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PA97B1zPEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PA97CFzPEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PA97CVzPEeOeP67GJGKDkA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PA97ClzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PA97C1zPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PA97DFzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PA97DVzPEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PA97DlzPEeOeP67GJGKDkA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PA97D1zPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PA97EFzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PA97EVzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PA97ElzPEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PA97E1zPEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PA97FFzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PA97FVzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PA97FlzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PA97F1zPEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_PA30YFzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PA97AVzPEeOeP67GJGKDkA" x="588" y="366" width="151"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SNeTQVzPEeOeP67GJGKDkA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SNeTQ1zPEeOeP67GJGKDkA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SNeTRFzPEeOeP67GJGKDkA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SNeTRVzPEeOeP67GJGKDkA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SNeTRlzPEeOeP67GJGKDkA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SNeTR1zPEeOeP67GJGKDkA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SNeTSFzPEeOeP67GJGKDkA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SNeTSVzPEeOeP67GJGKDkA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SNeTSlzPEeOeP67GJGKDkA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SNeTS1zPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SNeTTFzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SNeTTVzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SNeTTlzPEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SNeTT1zPEeOeP67GJGKDkA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SNeTUFzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SNeTUVzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SNeTUlzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SNeTU1zPEeOeP67GJGKDkA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SNeTVFzPEeOeP67GJGKDkA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SNeTVVzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SNeTVlzPEeOeP67GJGKDkA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SNeTV1zPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SNeTWFzPEeOeP67GJGKDkA"/>
+ </children>
+ <element xmi:type="uml:Class" href="architecture-v3.uml#_SNeTQFzPEeOeP67GJGKDkA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SNeTQlzPEeOeP67GJGKDkA" x="348" y="182" width="230"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_HLcwQVzPEeOeP67GJGKDkA"/>
+ <element xmi:type="uml:Model" href="architecture-v3.uml#_bAQtoFzGEeOeP67GJGKDkA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_R09soVzPEeOeP67GJGKDkA" type="4003" source="_SNeTQVzPEeOeP67GJGKDkA" target="_IWgOIFzPEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_R09spFzPEeOeP67GJGKDkA" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R09spVzPEeOeP67GJGKDkA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_R09splzPEeOeP67GJGKDkA" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R09sp1zPEeOeP67GJGKDkA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_R09solzPEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="architecture-v3.uml#_R09soFzPEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_R09so1zPEeOeP67GJGKDkA" points="[-10, -6, 134, 82]$[-142, -81, 2, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R1J54FzPEeOeP67GJGKDkA" id="(0.6652173913043479,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R1J54VzPEeOeP67GJGKDkA" id="(0.620253164556962,0.9380530973451328)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Y_ZTAFzPEeOeP67GJGKDkA" type="4002" source="_IwYtwVzPEeOeP67GJGKDkA" target="_SNeTQVzPEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y_ZTA1zPEeOeP67GJGKDkA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Y_ZTBFzPEeOeP67GJGKDkA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Y_ZTAVzPEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_Y_TMYFzPEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y_ZTAlzPEeOeP67GJGKDkA" points="[6, -2, -148, 48]$[150, -44, -4, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y_fZoFzPEeOeP67GJGKDkA" id="(0.6494845360824743,0.02)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y_fZoVzPEeOeP67GJGKDkA" id="(0.3826086956521739,0.94)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZwmtgVzPEeOeP67GJGKDkA" type="4002" source="_PA97AFzPEeOeP67GJGKDkA" target="_SNeTQVzPEeOeP67GJGKDkA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZwmthFzPEeOeP67GJGKDkA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZwmthVzPEeOeP67GJGKDkA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZwmtglzPEeOeP67GJGKDkA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="architecture-v3.uml#_ZwmtgFzPEeOeP67GJGKDkA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Zwmtg1zPEeOeP67GJGKDkA" points="[-34, -10, 146, 43]$[-173, -42, 7, 11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zwy6wFzPEeOeP67GJGKDkA" id="(0.3841059602649007,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zwy6wVzPEeOeP67GJGKDkA" id="(0.6173913043478261,0.89)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_uQQgIXh8EeOlpfB_tZS-QA" type="PapyrusUMLStateMachineDiagram" name="Layers Life Cycle" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_uQQgInh8EeOlpfB_tZS-QA" type="2000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uQQgI3h8EeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uQQgJHh8EeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uQQgJXh8EeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uQQgJnh8EeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uQQgJ3h8EeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uQQgKHh8EeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uQQgKXh8EeOlpfB_tZS-QA" type="2001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uQQgKnh8EeOlpfB_tZS-QA" width="847" height="25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uQQgK3h8EeOlpfB_tZS-QA" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_uQQgLHh8EeOlpfB_tZS-QA" type="3000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uQQgLXh8EeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uQQgLnh8EeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uQQgL3h8EeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uQQgMHh8EeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uQQgMXh8EeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uQQgMnh8EeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uQQgM3h8EeOlpfB_tZS-QA" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uQQgNHh8EeOlpfB_tZS-QA" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uQQgNXh8EeOlpfB_tZS-QA" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_vdmdAHh8EeOlpfB_tZS-QA" type="8000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vdmdAnh8EeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vdmdA3h8EeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vdmdBHh8EeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vdmdBXh8EeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vdmdBnh8EeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vdmdB3h8EeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vdmdCHh8EeOlpfB_tZS-QA" type="8001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vdmdCXh8EeOlpfB_tZS-QA" x="-18" y="-30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vdmdCnh8EeOlpfB_tZS-QA" type="8002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vdmdC3h8EeOlpfB_tZS-QA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Pseudostate" href="architecture-v3.uml#_vdgWYHh8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vdmdAXh8EeOlpfB_tZS-QA" x="24" y="131"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wpIcAXh8EeOlpfB_tZS-QA" type="6000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpIcA3h8EeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpIcBHh8EeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpIcBXh8EeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpIcBnh8EeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpIcB3h8EeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpIcCHh8EeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wpIcCXh8EeOlpfB_tZS-QA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0CYPwHh8EeOlpfB_tZS-QA" width="73"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wpIcCnh8EeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpIcC3h8EeOlpfB_tZS-QA" y="-1" width="73"/>
+ </children>
+ <element xmi:type="uml:State" href="architecture-v3.uml#_wpIcAHh8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpIcAnh8EeOlpfB_tZS-QA" x="192" y="119" width="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1MAKQHh8EeOlpfB_tZS-QA" type="6000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1MAKQnh8EeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1MAKQ3h8EeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1MAKRHh8EeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1MAKRXh8EeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1MAKRnh8EeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1MAKR3h8EeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1MAKSHh8EeOlpfB_tZS-QA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4om0AHh8EeOlpfB_tZS-QA" width="73"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1MAKSXh8EeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1MAKSnh8EeOlpfB_tZS-QA" y="-1" width="73"/>
+ </children>
+ <element xmi:type="uml:State" href="architecture-v3.uml#_1L6DoHh8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1MAKQXh8EeOlpfB_tZS-QA" x="186" y="287" width="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5CvLQXh8EeOlpfB_tZS-QA" type="6000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5CvLQ3h8EeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5CvLRHh8EeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5CvLRXh8EeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5CvLRnh8EeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5CvLR3h8EeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5CvLSHh8EeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5CvLSXh8EeOlpfB_tZS-QA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8b-_AHh8EeOlpfB_tZS-QA" width="87"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5CvLSnh8EeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5CvLS3h8EeOlpfB_tZS-QA" y="-1" width="87"/>
+ </children>
+ <element xmi:type="uml:State" href="architecture-v3.uml#_5CvLQHh8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5CvLQnh8EeOlpfB_tZS-QA" x="474" y="197" width="87"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_88ymAHh8EeOlpfB_tZS-QA" type="6000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_88ymAnh8EeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_88ymA3h8EeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_88ymBHh8EeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_88ymBXh8EeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_88ymBnh8EeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_88ymB3h8EeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_88ymCHh8EeOlpfB_tZS-QA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-DXMgHh8EeOlpfB_tZS-QA" width="93"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_88ymCXh8EeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_88ymCnh8EeOlpfB_tZS-QA" y="-1" width="93"/>
+ </children>
+ <element xmi:type="uml:State" href="architecture-v3.uml#_88sfYHh8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_88ymAXh8EeOlpfB_tZS-QA" x="474" y="365" width="93"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_A8n4oHh9EeOlpfB_tZS-QA" type="666" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A8n4o3h9EeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A8n4pHh9EeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A8n4pXh9EeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A8n4pnh9EeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A8n4p3h9EeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A8n4qHh9EeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A8n4qXh9EeOlpfB_tZS-QA" type="6666"/>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_A8n4oXh9EeOlpfB_tZS-QA"/>
+ <element xmi:type="uml:Comment" href="architecture-v3.uml#_A8brYHh9EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A8n4onh9EeOlpfB_tZS-QA" x="636" y="65"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SOzyIHh9EeOlpfB_tZS-QA" type="8000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SOzyInh9EeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SOzyI3h9EeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SOzyJHh9EeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SOzyJXh9EeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SOzyJnh9EeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SOzyJ3h9EeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SOzyKHh9EeOlpfB_tZS-QA" type="8001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SOzyKXh9EeOlpfB_tZS-QA" x="-17" y="-31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SOzyKnh9EeOlpfB_tZS-QA" type="8002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SOzyK3h9EeOlpfB_tZS-QA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Pseudostate" href="architecture-v3.uml#_SOtrgHh9EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SOzyIXh9EeOlpfB_tZS-QA" x="23" y="288"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uQQgNnh8EeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Region" href="architecture-v3.uml#_uQQgIHh8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uQQgN3h8EeOlpfB_tZS-QA" width="847" height="516"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uQQgOHh8EeOlpfB_tZS-QA" y="25" width="847" height="516"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="architecture-v3.uml#_sqYugHh8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uQQgOXh8EeOlpfB_tZS-QA" x="30" y="30" width="847" height="541"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_uQQgOnh8EeOlpfB_tZS-QA"/>
+ <element xmi:type="uml:StateMachine" href="architecture-v3.uml#_sqYugHh8EeOlpfB_tZS-QA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_PmKU4Hh9EeOlpfB_tZS-QA" type="667" source="_A8n4oHh9EeOlpfB_tZS-QA" target="_5CvLQXh8EeOlpfB_tZS-QA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_PmKU4Xh9EeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PmKU4nh9EeOlpfB_tZS-QA" points="[-9, 3, 58, -24]$[-54, 23, 13, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PmWiIHh9EeOlpfB_tZS-QA" id="(0.05,0.6388888888888888)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PmWiIXh9EeOlpfB_tZS-QA" id="(0.8505747126436781,0.3)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QziuAHh9EeOlpfB_tZS-QA" type="7000" source="_vdmdAHh8EeOlpfB_tZS-QA" target="_wpIcAXh8EeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QziuA3h9EeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QziuBHh9EeOlpfB_tZS-QA" x="-9" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QziuBXh9EeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QziuBnh9EeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QziuB3h9EeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QziuCHh9EeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_QziuAXh9EeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_QzWgwHh9EeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QziuAnh9EeOlpfB_tZS-QA" points="[10, 4, -117, -49]$[121, 51, -6, -2]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qzu7QHh9EeOlpfB_tZS-QA" id="(0.0821917808219178,0.35)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_T3VPIHh9EeOlpfB_tZS-QA" type="7000" source="_SOzyIHh9EeOlpfB_tZS-QA" target="_1MAKQHh8EeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_T3VPI3h9EeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T3VPJHh9EeOlpfB_tZS-QA" x="-6" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T3VPJXh9EeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T3VPJnh9EeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T3VPJ3h9EeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T3VPKHh9EeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_T3VPIXh9EeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_T3PIgHh9EeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_T3VPInh9EeOlpfB_tZS-QA" points="[10, 6, -149, 0]$[153, 5, -6, -1]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T3hcYHh9EeOlpfB_tZS-QA" id="(0.0821917808219178,0.425)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Wz_NgHh9EeOlpfB_tZS-QA" type="7000" source="_5CvLQXh8EeOlpfB_tZS-QA" target="_88ymAHh8EeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wz_Ng3h9EeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_W0FUIHh9EeOlpfB_tZS-QA" x="-10" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_W0FUIXh9EeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_W0FUInh9EeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_W0FUI3h9EeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_W0FUJHh9EeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Wz_NgXh9EeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_Wz5G4Hh9EeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wz_Ngnh9EeOlpfB_tZS-QA" points="[0, 4, -22, -110]$[9, 108, -13, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_W0FUJXh9EeOlpfB_tZS-QA" id="(0.21839080459770116,0.975)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_W0FUJnh9EeOlpfB_tZS-QA" id="(0.1827956989247312,0.15)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_X_U_QXh9EeOlpfB_tZS-QA" type="7000" source="_88ymAHh8EeOlpfB_tZS-QA" target="_5CvLQXh8EeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_X_U_RHh9EeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_U_RXh9EeOlpfB_tZS-QA" x="-38" y="48"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X_U_Rnh9EeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_U_R3h9EeOlpfB_tZS-QA" x="-8" y="37"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X_U_SHh9EeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_U_SXh9EeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_X_U_Qnh9EeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_X_U_QHh9EeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_X_U_Q3h9EeOlpfB_tZS-QA" points="[-3, -8, 37, 114]$[-28, -119, 12, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X_nTIHh9EeOlpfB_tZS-QA" id="(0.8494623655913979,0.2)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X_nTIXh9EeOlpfB_tZS-QA" id="(0.8620689655172413,0.75)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZpaigHh9EeOlpfB_tZS-QA" type="7000" source="_wpIcAXh8EeOlpfB_tZS-QA" target="_5CvLQXh8EeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Zpaig3h9EeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZpaihHh9EeOlpfB_tZS-QA" x="-23" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZpaihXh9EeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Zpaihnh9EeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Zpaih3h9EeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZpaiiHh9EeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZpaigXh9EeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_ZpOVQHh9EeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Zpaignh9EeOlpfB_tZS-QA" points="[10, 1, -218, -28]$[225, 29, -3, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZpgpIHh9EeOlpfB_tZS-QA" id="(0.863013698630137,0.525)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZpgpIXh9EeOlpfB_tZS-QA" id="(0.034482758620689655,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_a0RzIHh9EeOlpfB_tZS-QA" type="7000" source="_1MAKQHh8EeOlpfB_tZS-QA" target="_5CvLQXh8EeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_a0RzI3h9EeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a0RzJHh9EeOlpfB_tZS-QA" x="-14" y="-1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a0RzJXh9EeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a0RzJnh9EeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a0RzJ3h9EeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a0RzKHh9EeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_a0RzIXh9EeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_a0LsgHh9EeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a0RzInh9EeOlpfB_tZS-QA" points="[8, -5, -225, 116]$[229, -120, -4, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a0eAYHh9EeOlpfB_tZS-QA" id="(0.8904109589041096,0.375)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a0eAYXh9EeOlpfB_tZS-QA" id="(0.04597701149425287,0.8)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_GqKscXiMEeOlpfB_tZS-QA" type="PapyrusUMLStateMachineDiagram" name="Layer Life Cycle v2" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GqKscniMEeOlpfB_tZS-QA" type="2000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GqKsc3iMEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GqKsdHiMEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GqKsdXiMEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GqKsdniMEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GqKsd3iMEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GqKseHiMEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GqKseXiMEeOlpfB_tZS-QA" type="2001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GqKseniMEeOlpfB_tZS-QA" width="871" height="25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GqKse3iMEeOlpfB_tZS-QA" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_GqKsfHiMEeOlpfB_tZS-QA" type="3000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GqKsfXiMEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GqKsfniMEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GqKsf3iMEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GqKsgHiMEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GqKsgXiMEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GqKsgniMEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GqKsg3iMEeOlpfB_tZS-QA" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GqKshHiMEeOlpfB_tZS-QA" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GqKshXiMEeOlpfB_tZS-QA" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_IReBcHiMEeOlpfB_tZS-QA" type="8000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IReBcniMEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IReBc3iMEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IReBdHiMEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IReBdXiMEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IReBdniMEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IReBd3iMEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IReBeHiMEeOlpfB_tZS-QA" type="8001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IReBeXiMEeOlpfB_tZS-QA" x="-17" y="-32"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IReBeniMEeOlpfB_tZS-QA" type="8002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IReBe3iMEeOlpfB_tZS-QA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Pseudostate" href="architecture-v3.uml#_IRX60HiMEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IReBcXiMEeOlpfB_tZS-QA" x="41" y="223"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IqdJMXiMEeOlpfB_tZS-QA" type="6000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IqdJM3iMEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IqdJNHiMEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IqdJNXiMEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IqdJNniMEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IqdJN3iMEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IqdJOHiMEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IqdJOXiMEeOlpfB_tZS-QA" type="6001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IqdJOniMEeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IqdJO3iMEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:State" href="architecture-v3.uml#_IqdJMHiMEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IqdJMniMEeOlpfB_tZS-QA" x="174" y="215"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KcUvcXiMEeOlpfB_tZS-QA" type="6000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KcUvc3iMEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KcUvdHiMEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KcUvdXiMEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KcUvdniMEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Kca2EHiMEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Kca2EXiMEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Kca2EniMEeOlpfB_tZS-QA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ObVisHiMEeOlpfB_tZS-QA" width="111"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Kca2E3iMEeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kca2FHiMEeOlpfB_tZS-QA" y="-1" width="111"/>
+ </children>
+ <element xmi:type="uml:State" href="architecture-v3.uml#_KcUvcHiMEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KcUvcniMEeOlpfB_tZS-QA" x="442" y="122" width="111"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_M9r48XiMEeOlpfB_tZS-QA" type="6000" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M9r483iMEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M9r49HiMEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M9r49XiMEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M9r49niMEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M9r493iMEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M9r4-HiMEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_M9r4-XiMEeOlpfB_tZS-QA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OG1SUHiMEeOlpfB_tZS-QA" width="109"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_M9x_kHiMEeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M9x_kXiMEeOlpfB_tZS-QA" y="-1" width="109"/>
+ </children>
+ <element xmi:type="uml:State" href="architecture-v3.uml#_M9r48HiMEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M9r48niMEeOlpfB_tZS-QA" x="444" y="293" width="109"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GqKshniMEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Region" href="architecture-v3.uml#_GqKscHiMEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GqKsh3iMEeOlpfB_tZS-QA" width="871" height="510"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GqKsiHiMEeOlpfB_tZS-QA" y="25" width="871" height="510"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="architecture-v3.uml#_E3DwEHiMEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GqKsiXiMEeOlpfB_tZS-QA" x="30" y="30" width="871" height="535"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_GqKsiniMEeOlpfB_tZS-QA"/>
+ <element xmi:type="uml:StateMachine" href="architecture-v3.uml#_E3DwEHiMEeOlpfB_tZS-QA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Qsyn8HiMEeOlpfB_tZS-QA" type="7000" source="_IReBcHiMEeOlpfB_tZS-QA" target="_IqdJMXiMEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Qsyn83iMEeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Qsyn9HiMEeOlpfB_tZS-QA" x="-3" y="26"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Qsyn9XiMEeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Qsyn9niMEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Qsyn93iMEeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Qsyn-HiMEeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Qsyn8XiMEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_QsmasHiMEeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Qsyn8niMEeOlpfB_tZS-QA" points="[10, -1, -133, -3]$[134, -18, -9, -20]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_S2Hr8HiMEeOlpfB_tZS-QA" type="7000" source="_IqdJMXiMEeOlpfB_tZS-QA" target="_KcUvcXiMEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_S2NykHiMEeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S2NykXiMEeOlpfB_tZS-QA" x="-18" y="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S2NykniMEeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S2Nyk3iMEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S2NylHiMEeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S2NylXiMEeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_S2Hr8XiMEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_S2BlUHiMEeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_S2Hr8niMEeOlpfB_tZS-QA" points="[9, -4, -238, 80]$[237, -82, -10, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S2NylniMEeOlpfB_tZS-QA" id="(0.775,0.45)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S2Nyl3iMEeOlpfB_tZS-QA" id="(0.12345679012345678,0.675)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_T6f6EHiMEeOlpfB_tZS-QA" type="7000" source="_IqdJMXiMEeOlpfB_tZS-QA" target="_M9r48XiMEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_T6f6E3iMEeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T6f6FHiMEeOlpfB_tZS-QA" x="-22" y="24"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T6f6FXiMEeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T6f6FniMEeOlpfB_tZS-QA" x="-16" y="15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T6mAsHiMEeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T6mAsXiMEeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_T6f6EXiMEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_T6ZzcHiMEeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_T6f6EniMEeOlpfB_tZS-QA" points="[9, 2, -236, -75]$[239, 77, -6, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T6mAsniMEeOlpfB_tZS-QA" id="(0.775,0.55)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T6mAs3iMEeOlpfB_tZS-QA" id="(0.0759493670886076,0.525)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_VI_GcHiMEeOlpfB_tZS-QA" type="7000" source="_M9r48XiMEeOlpfB_tZS-QA" target="_KcUvcXiMEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VI_Gc3iMEeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VI_GdHiMEeOlpfB_tZS-QA" x="-28" y="48"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VI_GdXiMEeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VI_GdniMEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VI_Gd3iMEeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VI_GeHiMEeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_VI_GcXiMEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_VI4_0HiMEeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VI_GcniMEeOlpfB_tZS-QA" points="[1, -2, -68, 138]$[65, -133, -4, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VJLTsHiMEeOlpfB_tZS-QA" id="(0.7981651376146789,0.075)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VJLTsXiMEeOlpfB_tZS-QA" id="(0.7207207207207207,0.825)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_WO4-kHiMEeOlpfB_tZS-QA" type="7000" source="_KcUvcXiMEeOlpfB_tZS-QA" target="_M9r48XiMEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_WO_FMHiMEeOlpfB_tZS-QA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WO_FMXiMEeOlpfB_tZS-QA" x="-21" y="11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WO_FMniMEeOlpfB_tZS-QA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WO_FM3iMEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WO_FNHiMEeOlpfB_tZS-QA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WO_FNXiMEeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_WO4-kXiMEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Transition" href="architecture-v3.uml#_WOy38HiMEeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WO4-kniMEeOlpfB_tZS-QA" points="[2, 5, -71, -136]$[71, 136, -2, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WPFL0HiMEeOlpfB_tZS-QA" id="(0.0990990990990991,0.875)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WPFL0XiMEeOlpfB_tZS-QA" id="(0.14678899082568808,0.25)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_qdZ18IeYEeOyqaF0O659SA" type="PapyrusUMLClassDiagram" name="Layer Factories" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_rnVScIeYEeOyqaF0O659SA" type="2004">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rnVScoeYEeOyqaF0O659SA" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rnVSc4eYEeOyqaF0O659SA" type="7006">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rnVSgoeYEeOyqaF0O659SA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rnVSg4eYEeOyqaF0O659SA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_Qvw9oIeZEeOyqaF0O659SA" type="3006">
+ <element xmi:type="uml:Property" href="architecture-v3.uml#_hG_gMoeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Qvw9oYeZEeOyqaF0O659SA" x="183" y="9"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rnVSdIeYEeOyqaF0O659SA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rnVSdYeYEeOyqaF0O659SA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rnVSdoeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rnVSd4eYEeOyqaF0O659SA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rnVSeIeYEeOyqaF0O659SA" type="7007">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rnVShIeYEeOyqaF0O659SA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rnVShYeYEeOyqaF0O659SA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_4LSiQIeYEeOyqaF0O659SA" type="3007">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__JmYMIeYEeOyqaF0O659SA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B0bmwIeZEeOyqaF0O659SA" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_hG_gNIeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4LSiQYeYEeOyqaF0O659SA" x="59" y="11"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4mkwEIeYEeOyqaF0O659SA" type="3007">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__JylcoeYEeOyqaF0O659SA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B0n0AYeZEeOyqaF0O659SA" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_hHFm0oeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4mkwEYeYEeOyqaF0O659SA" x="115" y="29"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5friUIeYEeOyqaF0O659SA" type="3007">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__JylcIeYEeOyqaF0O659SA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B0n0AIeZEeOyqaF0O659SA" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_hHFm2IeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5friUYeYEeOyqaF0O659SA" x="115" y="42"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_52YyIIeYEeOyqaF0O659SA" type="3007">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__Jse1oeYEeOyqaF0O659SA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B0htY4eZEeOyqaF0O659SA" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_hHFm3oeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_52YyIYeYEeOyqaF0O659SA" x="132" y="53"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6web0IeYEeOyqaF0O659SA" type="3007">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__Jse1IeYEeOyqaF0O659SA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B0htYoeZEeOyqaF0O659SA" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_hHFm5YeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6web0YeYEeOyqaF0O659SA" x="199" y="80"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7JR9YIeYEeOyqaF0O659SA" type="3007">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__Jse0oeYEeOyqaF0O659SA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B0htYYeZEeOyqaF0O659SA" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_hHFm7IeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7JR9YYeYEeOyqaF0O659SA" x="160" y="108"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7mePsIeYEeOyqaF0O659SA" type="3007">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__Jse0IeYEeOyqaF0O659SA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B0htYIeZEeOyqaF0O659SA" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="architecture-v3.uml#_hHFm94eYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7mePsYeYEeOyqaF0O659SA" x="127" y="122"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rnVSeYeYEeOyqaF0O659SA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rnVSeoeYEeOyqaF0O659SA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rnVSe4eYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rnVSfIeYEeOyqaF0O659SA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rnVSfYeYEeOyqaF0O659SA" type="7008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rnVShoeYEeOyqaF0O659SA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rnVSh4eYEeOyqaF0O659SA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rnVSfoeYEeOyqaF0O659SA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rnVSf4eYEeOyqaF0O659SA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rnVSgIeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rnVSgYeYEeOyqaF0O659SA"/>
+ </children>
+ <element xmi:type="uml:Interface" href="architecture-v3.uml#_hG_gMIeYEeOyqaF0O659SA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rnVScYeYEeOyqaF0O659SA" x="178" y="47"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_qdZ18YeYEeOyqaF0O659SA"/>
+ <element xmi:type="uml:Model" href="architecture-v3.uml#_-7kCULZJEeK8zaQi-hvdlw"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.uml b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.uml
new file mode 100644
index 00000000000..3deffebcded
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/models/architecture-v3.uml
@@ -0,0 +1,1244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_-7kCULZJEeK8zaQi-hvdlw" name="model">
+ <packagedElement xmi:type="uml:Package" xmi:id="_IygSQLZKEeK8zaQi-hvdlw" clientDependency="_NCWW0LZKEeK8zaQi-hvdlw _Xjd4EL2QEeKKJJ5BmR3W3Q" name="runtime">
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_NCWW0LZKEeK8zaQi-hvdlw" name="" client="_IygSQLZKEeK8zaQi-hvdlw" supplier="_KxbdELZKEeK8zaQi-hvdlw"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_Xjd4EL2QEeKKJJ5BmR3W3Q" name="Dependency1" client="_IygSQLZKEeK8zaQi-hvdlw" supplier="_ShE8QL2QEeKKJJ5BmR3W3Q"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_BY3WkNNnEeKwWoA8j13SIg" clientDependency="_g-43MNNpEeKwWoA8j13SIg" name="LayerStackService">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Ue8PkNNnEeKwWoA8j13SIg" name="synchronizers" type="_LrbLgNNnEeKwWoA8j13SIg" aggregation="composite" association="_UfCWMNNnEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ue8PkdNnEeKwWoA8j13SIg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ue8PktNnEeKwWoA8j13SIg" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_p_kNgNNpEeKwWoA8j13SIg" name="layerStacks" type="_3qy5UNNnEeKwWoA8j13SIg" association="_p_wawNNpEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p_kNgdNpEeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p_kNgtNpEeKwWoA8j13SIg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_9O7HwEyeEeObF6ELIGKT-g" name="layersSynchronizer" type="_T7VDsEyeEeObF6ELIGKT-g" aggregation="composite" association="_9O7u0EyeEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9O7HwUyeEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9O7HwkyeEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_g-43MNNpEeKwWoA8j13SIg" name="InterfaceRealization1" client="_BY3WkNNnEeKwWoA8j13SIg" supplier="_XlXjENNpEeKwWoA8j13SIg" contract="_XlXjENNpEeKwWoA8j13SIg"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_86bKcNNoEeKwWoA8j13SIg" name="getLayerStackSynchronizer"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_LrbLgNNnEeKwWoA8j13SIg" clientDependency="_f9KpkNNrEeKwWoA8j13SIg _gyvmsNNrEeKwWoA8j13SIg" name="LayerStackSynchronizer">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_z07zUNNtEeKwWoA8j13SIg">
+ <body>The Synchronizer is used to synchronize the properties of the Diagram when something change in the LayerStack.&#xD;
+The class listen to change events, then ask the LayerStack to compute the new values, and then set the new values in the diagram.</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_VXvf0NNnEeKwWoA8j13SIg" name="diagram" type="_rqknoM9UEeKO_rl5MA6s9A" association="_VX7tENNnEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VXvf0dNnEeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VXvf0tNnEeKwWoA8j13SIg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_WYfyMNNnEeKwWoA8j13SIg" name="layerStack" type="_t0NNoM9UEeKO_rl5MA6s9A" association="_WYl40NNnEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WYfyMdNnEeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WYfyMtNnEeKwWoA8j13SIg" value="1"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_f9KpkNNrEeKwWoA8j13SIg" name="InterfaceRealization1" client="_LrbLgNNnEeKwWoA8j13SIg" supplier="_HJLoANNqEeKwWoA8j13SIg" contract="_HJLoANNqEeKwWoA8j13SIg"/>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_gyvmsNNrEeKwWoA8j13SIg" name="InterfaceRealization2" client="_LrbLgNNnEeKwWoA8j13SIg" supplier="_OS41oNNqEeKwWoA8j13SIg" contract="_OS41oNNqEeKwWoA8j13SIg"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_pEYFsNNrEeKwWoA8j13SIg" name="activate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_qCessNNrEeKwWoA8j13SIg" name="deactivate"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UfCWMNNnEeKwWoA8j13SIg" name="layerStackService_layerStackSynchronizer_1" memberEnd="_UfCWMdNnEeKwWoA8j13SIg _Ue8PkNNnEeKwWoA8j13SIg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_UfCWMdNnEeKwWoA8j13SIg" name="layerStackService" type="_T7VDsEyeEeObF6ELIGKT-g" association="_UfCWMNNnEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UfCWMtNnEeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UfCWM9NnEeKwWoA8j13SIg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_VX7tENNnEeKwWoA8j13SIg" name="layerStackSynchronizer_diagram_1" memberEnd="_VX7tEdNnEeKwWoA8j13SIg _VXvf0NNnEeKwWoA8j13SIg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_VX7tEdNnEeKwWoA8j13SIg" name="layerStackSynchronizer" type="_LrbLgNNnEeKwWoA8j13SIg" association="_VX7tENNnEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VX7tEtNnEeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VX7tE9NnEeKwWoA8j13SIg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_WYl40NNnEeKwWoA8j13SIg" name="layerStackSynchronizer_layerStack_1" memberEnd="_WYl40dNnEeKwWoA8j13SIg _WYfyMNNnEeKwWoA8j13SIg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_WYl40dNnEeKwWoA8j13SIg" name="layerStackSynchronizer" type="_LrbLgNNnEeKwWoA8j13SIg" association="_WYl40NNnEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WYl40tNnEeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WYl409NnEeKwWoA8j13SIg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Tevr8NNpEeKwWoA8j13SIg" name="DiagramRemovedEventProvider"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_XlXjENNpEeKwWoA8j13SIg" name="IDiagramRemovedEventProvider">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_bdkjsNNpEeKwWoA8j13SIg" name="diagramRemovedEvent"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_p_wawNNpEeKwWoA8j13SIg" name="layerStackService_layerStacks_1" memberEnd="_p_wawdNpEeKwWoA8j13SIg _p_kNgNNpEeKwWoA8j13SIg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_p_wawdNpEeKwWoA8j13SIg" name="layerStackService" type="_BY3WkNNnEeKwWoA8j13SIg" association="_p_wawNNpEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p_wawtNpEeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p_waw9NpEeKwWoA8j13SIg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_z8UwcEydEeObF6ELIGKT-g" name="DerivedViewLayerSynchronizer">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_7ZAkcEydEeObF6ELIGKT-g">
+ <body>RegExpSynchronizer is responsible to synchronize all the RegExp of a LayersStack.</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Yd4-AEygEeObF6ELIGKT-g" name="diagramEventListener" type="_HJLoANNqEeKwWoA8j13SIg" aggregation="composite" association="_YeA50EygEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yd4-AUygEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Yd4-AkygEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ZFFg4EygEeObF6ELIGKT-g" name="layersModelEventListener" type="_OS41oNNqEeKwWoA8j13SIg" aggregation="composite" association="_ZFGvAEygEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZFFg4UygEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZFFg4kygEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_UK_MIEylEeObF6ELIGKT-g" name="layerStack" type="_t0NNoM9UEeKO_rl5MA6s9A" association="_UK_MI0ylEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UK_MIUylEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UK_MIkylEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_S_ae8EynEeObF6ELIGKT-g" name="regExpLayerEventListener" type="_hYZzMEymEeObF6ELIGKT-g" aggregation="composite" association="_S_btEEynEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S_ae8UynEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S_ae8kynEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_m-hRsEynEeObF6ELIGKT-g" name="level1ViewChangedEventNotifier" type="_PHzwsEymEeObF6ELIGKT-g" aggregation="composite" association="_m-if0EynEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m-hRsUynEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m-hRskynEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_pSrFoEynEeObF6ELIGKT-g" name="anyViewChangedEventNotifier" type="_PHzwsEymEeObF6ELIGKT-g" aggregation="composite" association="_pSsTwEynEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pSrFoUynEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pSrFokynEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_0WZRwEynEeObF6ELIGKT-g" name="domainChangedEventNotifier" type="_NNG-kEymEeObF6ELIGKT-g" aggregation="composite" association="_0Waf4EynEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0WZRwUynEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0WZRwkynEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_x4a2oEyrEeObF6ELIGKT-g" name="domainPropertyChangedEventListener" type="_qwDXsEypEeObF6ELIGKT-g" aggregation="composite" association="_x4cEwEyrEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x4a2oUyrEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x4a2okyrEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_T7VDsEyeEeObF6ELIGKT-g" name="LayerStackApplicationSynchronizer">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_mrgIsEyfEeObF6ELIGKT-g" name="regExpSynchronizers" type="_z8UwcEydEeObF6ELIGKT-g" aggregation="composite" association="_mrhW0EyfEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mrgIsUyfEeObF6ELIGKT-g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mrgIskyfEeObF6ELIGKT-g" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_9O7u0EyeEeObF6ELIGKT-g" name="layerStackService_layerStackApplicationSynchronizer_1" memberEnd="_9O7u0UyeEeObF6ELIGKT-g _9O7HwEyeEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_9O7u0UyeEeObF6ELIGKT-g" name="layerStackService" type="_BY3WkNNnEeKwWoA8j13SIg" association="_9O7u0EyeEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9O7u0kyeEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9O7u00yeEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_mrhW0EyfEeObF6ELIGKT-g" name="layerStackApplicationSynchronizer_regExpSynchronizer_1" memberEnd="_mrhW0UyfEeObF6ELIGKT-g _mrgIsEyfEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_mrhW0UyfEeObF6ELIGKT-g" name="layerStackApplicationSynchronizer" type="_T7VDsEyeEeObF6ELIGKT-g" association="_mrhW0EyfEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mrhW0kyfEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mrhW00yfEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_YeA50EygEeObF6ELIGKT-g" name="regExpSynchronizer_iDiagramEventListener_1" memberEnd="_YeA50UygEeObF6ELIGKT-g _Yd4-AEygEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_YeA50UygEeObF6ELIGKT-g" name="regExpSynchronizer" type="_PHzwsEymEeObF6ELIGKT-g" association="_YeA50EygEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YeA50kygEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YeA500ygEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_ZFGvAEygEeObF6ELIGKT-g" name="regExpSynchronizer_iLayersModelEventListener_1" memberEnd="_ZFGvAUygEeObF6ELIGKT-g _ZFFg4EygEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_ZFGvAUygEeObF6ELIGKT-g" name="regExpSynchronizer" type="_z8UwcEydEeObF6ELIGKT-g" association="_ZFGvAEygEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZFGvAkygEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZFGvA0ygEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-mWi0EygEeObF6ELIGKT-g" clientDependency="_Z_oBEEyhEeObF6ELIGKT-g" name="LayersStackAndApplicationLifeCycleEventNotifier"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_GmQYoEyhEeObF6ELIGKT-g" name="ILayersStackApplicationEventListener">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_L2KMAEyhEeObF6ELIGKT-g" name="layerStackAdded"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_M_w4YEyhEeObF6ELIGKT-g" name="layerStackRemoved"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_VVf0QEyhEeObF6ELIGKT-g" clientDependency="_bc3bIEyhEeObF6ELIGKT-g" name="LayersStackApplicationEventNotifier"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_Z_oBEEyhEeObF6ELIGKT-g" name="Usage1" client="_-mWi0EygEeObF6ELIGKT-g" supplier="_GmQYoEyhEeObF6ELIGKT-g"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_bc3bIEyhEeObF6ELIGKT-g" name="Usage2" client="_VVf0QEyhEeObF6ELIGKT-g" supplier="_GmQYoEyhEeObF6ELIGKT-g"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_loxOcEyhEeObF6ELIGKT-g" clientDependency="_uaimEEyhEeObF6ELIGKT-g" name="NotationDiagramRemovedFromResourceEventNotifier"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_qDr6kEyhEeObF6ELIGKT-g" name="INotationDiagramRemovedEventListener">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_s_IYAEyhEeObF6ELIGKT-g" name="diagramRemoved"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_uaimEEyhEeObF6ELIGKT-g" name="Usage3" client="_loxOcEyhEeObF6ELIGKT-g" supplier="_qDr6kEyhEeObF6ELIGKT-g"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_a8pioEykEeObF6ELIGKT-g" clientDependency="_cXr9QEykEeObF6ELIGKT-g" name="LayersModelEventNotifier"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_cXr9QEykEeObF6ELIGKT-g" name="Usage4" client="_a8pioEykEeObF6ELIGKT-g" supplier="_OS41oNNqEeKwWoA8j13SIg"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UK_MI0ylEeObF6ELIGKT-g" name="regExpSynchronizer_layerStack_1" memberEnd="_UK_MJEylEeObF6ELIGKT-g _UK_MIEylEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_UK_MJEylEeObF6ELIGKT-g" name="regExpSynchronizer" type="_z8UwcEydEeObF6ELIGKT-g" association="_UK_MI0ylEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UK_MJUylEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UK_MJkylEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_iIr2EEylEeObF6ELIGKT-g" name="EventNotifier">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_wC9YkEylEeObF6ELIGKT-g">
+ <body>This class is used to record a list of listeners, and to send the associated event when the fireMethod is called</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_9fD74EymEeObF6ELIGKT-g" name="listeners" type="_u6-HIM-xEeKO_rl5MA6s9A" association="_9fFKAEymEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9fD74UymEeObF6ELIGKT-g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9fD74kymEeObF6ELIGKT-g" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_32mUAEylEeObF6ELIGKT-g" name="attachListener"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_52Ii0EylEeObF6ELIGKT-g" name="removeListener"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_71ZE0EylEeObF6ELIGKT-g" name="fireEvent"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_NNG-kEymEeObF6ELIGKT-g" name="DomainChangedEventManager">
+ <generalization xmi:type="uml:Generalization" xmi:id="_JsQRgEynEeObF6ELIGKT-g" general="_iIr2EEylEeObF6ELIGKT-g"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_itq40EytEeObF6ELIGKT-g" name="domainPropertyChangedEventNotifier" type="_rezFUEyvEeObF6ELIGKT-g" association="_itrf4EytEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_itq40UytEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_itq40kytEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_KiB0MEytEeObF6ELIGKT-g" name="startListening"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_MECZgEytEeObF6ELIGKT-g" name="stopListening"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_PHzwsEymEeObF6ELIGKT-g" name="ViewListChangedEventManager">
+ <generalization xmi:type="uml:Generalization" xmi:id="_KWW-cEynEeObF6ELIGKT-g" general="_iIr2EEylEeObF6ELIGKT-g"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_I--QkEyuEeObF6ELIGKT-g" name="diagramViewEventNotifier" type="_JwRLoEyjEeObF6ELIGKT-g" association="_I--3oEyuEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_I--QkUyuEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_I--QkkyuEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_xe-J8EytEeObF6ELIGKT-g" name="startListening"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_xe-J8UytEeObF6ELIGKT-g" name="stopListening"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_hYZzMEymEeObF6ELIGKT-g" name="IRegExpLayerEventListener">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_psYbkEymEeObF6ELIGKT-g" name="selectedEventTypesChanged"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_vtheoEymEeObF6ELIGKT-g" name="expressionChanged"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_9fFKAEymEeObF6ELIGKT-g" name="eventNotifier_regExpLayer_1" memberEnd="_9fFKAUymEeObF6ELIGKT-g _9fD74EymEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_9fFKAUymEeObF6ELIGKT-g" name="eventNotifier" type="_iIr2EEylEeObF6ELIGKT-g" association="_9fFKAEymEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9fFKAkymEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9fFKA0ymEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_S_btEEynEeObF6ELIGKT-g" name="regExpSynchronizer_iRegExpLayerEventListener_1" memberEnd="_S_btEUynEeObF6ELIGKT-g _S_ae8EynEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_S_btEUynEeObF6ELIGKT-g" name="regExpSynchronizer" type="_z8UwcEydEeObF6ELIGKT-g" association="_S_btEEynEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S_btEkynEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S_btE0ynEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_m-if0EynEeObF6ELIGKT-g" name="regExpSynchronizer_viewListChangedEventNotifier_1" memberEnd="_m-if0UynEeObF6ELIGKT-g _m-hRsEynEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_m-if0UynEeObF6ELIGKT-g" name="regExpSynchronizer" type="_z8UwcEydEeObF6ELIGKT-g" association="_m-if0EynEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m-if0kynEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m-if00ynEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_pSsTwEynEeObF6ELIGKT-g" name="regExpSynchronizer_viewListChangedEventNotifier_2" memberEnd="_pSsTwUynEeObF6ELIGKT-g _pSrFoEynEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_pSsTwUynEeObF6ELIGKT-g" name="regExpSynchronizer" type="_z8UwcEydEeObF6ELIGKT-g" association="_pSsTwEynEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pSsTwkynEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pSsTw0ynEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_0Waf4EynEeObF6ELIGKT-g" name="regExpSynchronizer_domainChangedEventNotifier_1" memberEnd="_0Waf4UynEeObF6ELIGKT-g _0WZRwEynEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_0Waf4UynEeObF6ELIGKT-g" name="regExpSynchronizer" type="_z8UwcEydEeObF6ELIGKT-g" association="_0Waf4EynEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0Waf4kynEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0Waf40ynEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_l9oKgEypEeObF6ELIGKT-g" clientDependency="_uEDfEEypEeObF6ELIGKT-g" name="DomainPropertyChangedEventNotifier">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Bigb0EyqEeObF6ELIGKT-g" annotatedElement="_l9oKgEypEeObF6ELIGKT-g">
+ <body>This notifier allows to listen on property changes on any children of the specified object.</body>
+ </ownedComment>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_WxdF0EyqEeObF6ELIGKT-g" name="attachListener"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_YO_a0EyqEeObF6ELIGKT-g" name="removeListener"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Z096IEyqEeObF6ELIGKT-g" name="addObservedObject">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_s2Rn4EyqEeObF6ELIGKT-g" name="obj" type="_3MwTgEyqEeObF6ELIGKT-g"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_bz66IEyqEeObF6ELIGKT-g" name="removeObservedObject"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_oHUooEyuEeObF6ELIGKT-g" name="stopListening"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_oHVPsEyuEeObF6ELIGKT-g" name="startListening"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_qwDXsEypEeObF6ELIGKT-g" name="IDomainPropertyChangedEventListener"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_uEDfEEypEeObF6ELIGKT-g" name="Usage5" client="_l9oKgEypEeObF6ELIGKT-g" supplier="_qwDXsEypEeObF6ELIGKT-g"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_x4cEwEyrEeObF6ELIGKT-g" name="regExpSynchronizer_iDomainPropertyChangedEventNotiffier_1" memberEnd="_x4cEwUyrEeObF6ELIGKT-g _x4a2oEyrEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_x4cEwUyrEeObF6ELIGKT-g" name="regExpSynchronizer" type="_NNG-kEymEeObF6ELIGKT-g" association="_x4cEwEyrEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x4cEwkyrEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x4cEw0yrEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_itrf4EytEeObF6ELIGKT-g" name="domainChangedEventManager_domainPropertyChangedEventNotifier_1" memberEnd="_itrf4UytEeObF6ELIGKT-g _itq40EytEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_itrf4UytEeObF6ELIGKT-g" name="domainChangedEventManager" type="_NNG-kEymEeObF6ELIGKT-g" association="_itrf4EytEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_itrf4kytEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_itrf40ytEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_I--3oEyuEeObF6ELIGKT-g" name="viewListChangedEventManager_diagramViewEventNotifier_1" memberEnd="_I--3oUyuEeObF6ELIGKT-g _I--QkEyuEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_I--3oUyuEeObF6ELIGKT-g" name="viewListChangedEventManager" type="_PHzwsEymEeObF6ELIGKT-g" association="_I--3oEyuEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_I--3okyuEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_I--3o0yuEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rezFUEyvEeObF6ELIGKT-g" clientDependency="_NrCFIEywEeObF6ELIGKT-g" name="DiagramDomainPropertyChangedEventNotifier">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_8Z6ioEyvEeObF6ELIGKT-g" annotatedElement="_rezFUEyvEeObF6ELIGKT-g">
+ <body>Fire events when a property of one of the domain element of the diagram is modified.&#xD;
+This notifier tracks the diagram root elements, and listen to their asociated domain elements.&#xD;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_WYVzgEywEeObF6ELIGKT-g" name="domainPropertyChangedEventNotifier" type="_l9oKgEypEeObF6ELIGKT-g" aggregation="composite" association="_WYWakEywEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WYVzgUywEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WYVzgkywEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_gjmGkEywEeObF6ELIGKT-g" name="diagramViewEventNotifier" type="_JwRLoEyjEeObF6ELIGKT-g" association="_gjmtoEywEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gjmGkUywEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gjmGkkywEeObF6ELIGKT-g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_NrCFIEywEeObF6ELIGKT-g" name="Usage6" client="_rezFUEyvEeObF6ELIGKT-g" supplier="_qwDXsEypEeObF6ELIGKT-g"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_WYWakEywEeObF6ELIGKT-g" name="diagramDomainPropertyChangedEventNotifier_domainPropertyChangedEventNotifier_1" memberEnd="_WYWakUywEeObF6ELIGKT-g _WYVzgEywEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_WYWakUywEeObF6ELIGKT-g" name="diagramDomainPropertyChangedEventNotifier" type="_rezFUEyvEeObF6ELIGKT-g" association="_WYWakEywEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WYWakkywEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WYWak0ywEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_gjmtoEywEeObF6ELIGKT-g" name="diagramDomainPropertyChangedEventNotifier_diagramViewEventNotifier_1" memberEnd="_gjmtoUywEeObF6ELIGKT-g _gjmGkEywEeObF6ELIGKT-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_gjmtoUywEeObF6ELIGKT-g" name="diagramDomainPropertyChangedEventNotifier" type="_rezFUEyvEeObF6ELIGKT-g" association="_gjmtoEywEeObF6ELIGKT-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gjmtokywEeObF6ELIGKT-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gjmto0ywEeObF6ELIGKT-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_bAQtoFzGEeOeP67GJGKDkA" name="regexp">
+ <packagedElement xmi:type="uml:Class" xmi:id="_sc15QFzGEeOeP67GJGKDkA" clientDependency="_vWp3oFzJEeOeP67GJGKDkA" name="ExpressionMatcher">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_lp2GAFzHEeOeP67GJGKDkA" annotatedElement="_sc15QFzGEeOeP67GJGKDkA">
+ <body>This class evaluate its associated expression against the associated models.&#xD;
+It provide a list of elements matching the expression in the model.&#xD;
+It fire some events when the list of matching elements change.&#xD;
+The expression is evaluated each time a change impacting the result occurs in the model.&#xD;
+&#xD;
+It maybe necessary to adjust the listeners on model changes to improve performances.</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_GIXm0FzIEeOeP67GJGKDkA" name="expr" visibility="public" type="_70TEoNIPEeKovM8ingMMQQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Hwmv8FzIEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Hwmv8VzIEeOeP67GJGKDkA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Hwmv8lzIEeOeP67GJGKDkA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ISLL8FzIEeOeP67GJGKDkA" name="model" visibility="public" type="_t0NNoM9UEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvpL8FzIEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvpL8VzIEeOeP67GJGKDkA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_RvpL8lzIEeOeP67GJGKDkA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_oFbiMFzIEeOeP67GJGKDkA" name="modelChangedListeners" visibility="public">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qariUFzIEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qariUVzIEeOeP67GJGKDkA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_qariUlzIEeOeP67GJGKDkA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_dTKyIFzLEeOeP67GJGKDkA" name="expressionMatchElementsChangedListeners" type="_rYYgsFzIEeOeP67GJGKDkA" association="_dTQ4wFzLEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dTKyIVzLEeOeP67GJGKDkA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dTKyIlzLEeOeP67GJGKDkA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IDVscFzNEeOeP67GJGKDkA" name="matchingElements" type="_j52EYNIUEeKovM8ingMMQQ" association="_IDVsc1zNEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IDVscVzNEeOeP67GJGKDkA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IDVsclzNEeOeP67GJGKDkA" value="*"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_vWp3oFzJEeOeP67GJGKDkA" name="InterfaceRealization1" client="_sc15QFzGEeOeP67GJGKDkA" supplier="_hd8bYFzJEeOeP67GJGKDkA" contract="_hd8bYFzJEeOeP67GJGKDkA"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_dUYacFzIEeOeP67GJGKDkA" name="addMatchingElementsChangedListener"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_f2gY8FzIEeOeP67GJGKDkA" name="removematchingElementsChangedListener"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_kFdssFzIEeOeP67GJGKDkA" name="fireMatchingElementChanged"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rYYgsFzIEeOeP67GJGKDkA" clientDependency="_bBitwFzLEeOeP67GJGKDkA" name="ExpressionMatchElementsChangedListener">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_rjEmYFzLEeOeP67GJGKDkA" name="expresionResultChanged"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_4ZF98FzIEeOeP67GJGKDkA" clientDependency="_Yg2SoFzLEeOeP67GJGKDkA _ZvbloFzLEeOeP67GJGKDkA" name="IModelChangedNotifier">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_O9YDMFzJEeOeP67GJGKDkA" annotatedElement="_4ZF98FzIEeOeP67GJGKDkA">
+ <body>Interface to be implemented by class notifying changes in a model.&#xD;
+This interface is used by ExpressionMatcher to listen on various part of model changes.</body>
+ </ownedComment>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="__cB1MFzIEeOeP67GJGKDkA" name="addModelChangedListener">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_46F8wFzJEeOeP67GJGKDkA" name="listener" type="_hd8bYFzJEeOeP67GJGKDkA"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_fsE1IFzJEeOeP67GJGKDkA" name="removeModelChangedListener">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8TL_gFzJEeOeP67GJGKDkA" name="listener" type="_hd8bYFzJEeOeP67GJGKDkA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_hd8bYFzJEeOeP67GJGKDkA" name="IModelChangedListener">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_oer6QFzJEeOeP67GJGKDkA" annotatedElement="_hd8bYFzJEeOeP67GJGKDkA">
+ <body>Interface implemented by listener whishing to listen on a IModelChangedNotifier.</body>
+ </ownedComment>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_-Vl8IFzJEeOeP67GJGKDkA" name="modelchanged">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_KmJHwFzKEeOeP67GJGKDkA" name="event" type="_Aii74FzKEeOeP67GJGKDkA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Aii74FzKEeOeP67GJGKDkA" name="ModelChangedEvent"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SOF7IFzLEeOeP67GJGKDkA" name="ExpressionMatcherElementsChangedEvent">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_yKWcYFzLEeOeP67GJGKDkA" name="expressionMatcher" type="_sc15QFzGEeOeP67GJGKDkA" association="_yKWcY1zLEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yKWcYVzLEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yKWcYlzLEeOeP67GJGKDkA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_oS7O0FzMEeOeP67GJGKDkA" name="removedElements" type="_j52EYNIUEeKovM8ingMMQQ" association="_oS7O01zMEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oS7O0VzMEeOeP67GJGKDkA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oS7O0lzMEeOeP67GJGKDkA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_o7viUFzMEeOeP67GJGKDkA" name="addedElements" type="_j52EYNIUEeKovM8ingMMQQ" association="_o7viU1zMEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o7viUVzMEeOeP67GJGKDkA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o7viUlzMEeOeP67GJGKDkA" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_Yg2SoFzLEeOeP67GJGKDkA" name="Usage1" client="_4ZF98FzIEeOeP67GJGKDkA" supplier="_hd8bYFzJEeOeP67GJGKDkA"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_ZvbloFzLEeOeP67GJGKDkA" name="Usage2" client="_4ZF98FzIEeOeP67GJGKDkA" supplier="_Aii74FzKEeOeP67GJGKDkA"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_bBitwFzLEeOeP67GJGKDkA" name="Usage3" client="_rYYgsFzIEeOeP67GJGKDkA" supplier="_SOF7IFzLEeOeP67GJGKDkA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_dTQ4wFzLEeOeP67GJGKDkA" name="expressionMatcher_expressionMatchElementsChangedListener_1" memberEnd="_dTQ4wVzLEeOeP67GJGKDkA _dTKyIFzLEeOeP67GJGKDkA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_dTQ4wVzLEeOeP67GJGKDkA" name="expressionMatcher" type="_sc15QFzGEeOeP67GJGKDkA" association="_dTQ4wFzLEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dTQ4wlzLEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dTQ4w1zLEeOeP67GJGKDkA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_yKWcY1zLEeOeP67GJGKDkA" name="expressionMatcherElementsChangedEvent_expressionMatcher_1" memberEnd="_yKWcZFzLEeOeP67GJGKDkA _yKWcYFzLEeOeP67GJGKDkA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_yKWcZFzLEeOeP67GJGKDkA" name="expressionMatcherElementsChangedEvent" type="_SOF7IFzLEeOeP67GJGKDkA" association="_yKWcY1zLEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yKWcZVzLEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yKWcZlzLEeOeP67GJGKDkA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_oS7O01zMEeOeP67GJGKDkA" name="expressionMatcherElementsChangedEvent_view_1" memberEnd="_oS7O1FzMEeOeP67GJGKDkA _oS7O0FzMEeOeP67GJGKDkA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_oS7O1FzMEeOeP67GJGKDkA" name="expressionMatcherElementsChangedEvent" type="_SOF7IFzLEeOeP67GJGKDkA" association="_oS7O01zMEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oS7O1VzMEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oS7O1lzMEeOeP67GJGKDkA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_o7viU1zMEeOeP67GJGKDkA" name="expressionMatcherElementsChangedEvent_view_2" memberEnd="_o7viVFzMEeOeP67GJGKDkA _o7viUFzMEeOeP67GJGKDkA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_o7viVFzMEeOeP67GJGKDkA" name="expressionMatcherElementsChangedEvent" type="_SOF7IFzLEeOeP67GJGKDkA" association="_o7viU1zMEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o7viVVzMEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o7viVlzMEeOeP67GJGKDkA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_IDVsc1zNEeOeP67GJGKDkA" clientDependency="_PlHmYFzOEeOeP67GJGKDkA" name="expressionMatcher_view_1" memberEnd="_IDVsdFzNEeOeP67GJGKDkA _IDVscFzNEeOeP67GJGKDkA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_IDVsdFzNEeOeP67GJGKDkA" name="expressionMatcher" type="_sc15QFzGEeOeP67GJGKDkA" association="_IDVsc1zNEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IDVsdVzNEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IDVsdlzNEeOeP67GJGKDkA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_G65oQFzOEeOeP67GJGKDkA" name="NotifyingList"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_PlHmYFzOEeOeP67GJGKDkA" name="Usage4" client="_IDVsc1zNEeOeP67GJGKDkA" supplier="_G65oQFzOEeOeP67GJGKDkA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IwYtwFzPEeOeP67GJGKDkA" name="NotationChangedNotifier">
+ <generalization xmi:type="uml:Generalization" xmi:id="_Y_TMYFzPEeOeP67GJGKDkA" general="_SNeTQFzPEeOeP67GJGKDkA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_PA30YFzPEeOeP67GJGKDkA" clientDependency="_R09soFzPEeOeP67GJGKDkA" name="UMLChangedNotifier">
+ <generalization xmi:type="uml:Generalization" xmi:id="_ZwmtgFzPEeOeP67GJGKDkA" general="_SNeTQFzPEeOeP67GJGKDkA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SNeTQFzPEeOeP67GJGKDkA" clientDependency="_R09soFzPEeOeP67GJGKDkA" name="AbstractModelChangedNotifier">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_R09soFzPEeOeP67GJGKDkA" name="InterfaceRealization1" client="_PA30YFzPEeOeP67GJGKDkA _SNeTQFzPEeOeP67GJGKDkA" supplier="_4ZF98FzIEeOeP67GJGKDkA" contract="_4ZF98FzIEeOeP67GJGKDkA"/>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_KAehQLZKEeK8zaQi-hvdlw" clientDependency="_OVNs4LZKEeK8zaQi-hvdlw" name="ui">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_1S4tEM9REeKO_rl5MA6s9A">
+ <body> </body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_OVNs4LZKEeK8zaQi-hvdlw" name="Dependency1" client="_KAehQLZKEeK8zaQi-hvdlw" supplier="_IygSQLZKEeK8zaQi-hvdlw"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hwJtQM9REeKO_rl5MA6s9A" name="LayersViewer">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_LgxZoM9UEeKO_rl5MA6s9A" name="selectionView" type="_yeyNwM9REeKO_rl5MA6s9A" aggregation="composite" association="_Lg4HUM9UEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LgxZoc9UEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LgxZos9UEeKO_rl5MA6s9A" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jfm4sM9REeKO_rl5MA6s9A" name="LayerStackUiPart">
+ <generalization xmi:type="uml:Generalization" xmi:id="_TdEXQM9TEeKO_rl5MA6s9A" general="_G-A1kM9TEeKO_rl5MA6s9A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_45dq0M9UEeKO_rl5MA6s9A" name="diagram" type="_rqknoM9UEeKO_rl5MA6s9A" association="_45kYgM9UEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_45dq0c9UEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_45dq0s9UEeKO_rl5MA6s9A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_5vJVoM9UEeKO_rl5MA6s9A" name="layerStack" type="_t0NNoM9UEeKO_rl5MA6s9A" association="_5vWJ8M9UEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5vJVoc9UEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5vJVos9UEeKO_rl5MA6s9A" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_l8z68M9REeKO_rl5MA6s9A" name="DiagramUiPart">
+ <generalization xmi:type="uml:Generalization" xmi:id="_S5l2wM9TEeKO_rl5MA6s9A" general="_G-A1kM9TEeKO_rl5MA6s9A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_w0UIoM9UEeKO_rl5MA6s9A" name="diagram" type="_rqknoM9UEeKO_rl5MA6s9A" association="_w0iyIM9UEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w0UIoc9UEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w0UIos9UEeKO_rl5MA6s9A" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_nrEMgM9REeKO_rl5MA6s9A" name="UnknownSelectionUiPart">
+ <generalization xmi:type="uml:Generalization" xmi:id="_SaqfEM9TEeKO_rl5MA6s9A" general="_G-A1kM9TEeKO_rl5MA6s9A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_yeyNwM9REeKO_rl5MA6s9A" clientDependency="_Ecf7EM9TEeKO_rl5MA6s9A" name="SelectionView">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_-YSyYM9REeKO_rl5MA6s9A">
+ <body>This view show the current selection among:&#xD;
+- Diagram with LayerStack&#xD;
+- Diagram without LayerStack&#xD;
+- other selection (unknown)&#xD;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="__C2gYM9TEeKO_rl5MA6s9A" name="uiPart" type="_G-A1kM9TEeKO_rl5MA6s9A" aggregation="composite" association="__DARYM9TEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__C2gYc9TEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__C2gYs9TEeKO_rl5MA6s9A" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_cw2FMM9SEeKO_rl5MA6s9A" name="SelectionTracker">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hEcoYM9SEeKO_rl5MA6s9A">
+ <body>This class track the current selection and fire following events:&#xD;
+- diagramWithoutStackLayerSelected (editor, diagram)&#xD;
+- diagramWithStackLayerSelected (editor, diagram, StackLayer)&#xD;
+- unknown selection (editor(could be null) )</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_Ecf7EM9TEeKO_rl5MA6s9A" name="" client="_yeyNwM9REeKO_rl5MA6s9A" supplier="_cw2FMM9SEeKO_rl5MA6s9A"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_G-A1kM9TEeKO_rl5MA6s9A" name="UiPart" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_rcDK0M9REeKO_rl5MA6s9A">
+ <body>A UiPart is used to show one element (and its subelements&#xD;
+</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="__DARYM9TEeKO_rl5MA6s9A" name="selectionView_uiPart_1" memberEnd="__DARYc9TEeKO_rl5MA6s9A __C2gYM9TEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="__DARYc9TEeKO_rl5MA6s9A" name="selectionView" type="_yeyNwM9REeKO_rl5MA6s9A" association="__DARYM9TEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__DARYs9TEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__DARY89TEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Lg4HUM9UEeKO_rl5MA6s9A" name="layersViewer_selectionView_1" memberEnd="_Lg4HUc9UEeKO_rl5MA6s9A _LgxZoM9UEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_Lg4HUc9UEeKO_rl5MA6s9A" name="layersViewer" type="_hwJtQM9REeKO_rl5MA6s9A" association="_Lg4HUM9UEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Lg4HUs9UEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Lg4HU89UEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_w0iyIM9UEeKO_rl5MA6s9A" name="diagramUiPart_diagram_1" memberEnd="_w0iyIc9UEeKO_rl5MA6s9A _w0UIoM9UEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_w0iyIc9UEeKO_rl5MA6s9A" name="diagramUiPart" type="_l8z68M9REeKO_rl5MA6s9A" association="_w0iyIM9UEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w0iyIs9UEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w0iyI89UEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_45kYgM9UEeKO_rl5MA6s9A" name="layerStackUiPart_diagram_1" memberEnd="_45kYgc9UEeKO_rl5MA6s9A _45dq0M9UEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_45kYgc9UEeKO_rl5MA6s9A" name="layerStackUiPart" type="_jfm4sM9REeKO_rl5MA6s9A" association="_45kYgM9UEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_45kYgs9UEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_45kYg89UEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_5vWJ8M9UEeKO_rl5MA6s9A" name="layerStackUiPart_layerStack_1" memberEnd="_5vWJ8c9UEeKO_rl5MA6s9A _5vJVoM9UEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_5vWJ8c9UEeKO_rl5MA6s9A" name="layerStackUiPart" type="_jfm4sM9REeKO_rl5MA6s9A" association="_5vWJ8M9UEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5vWJ8s9UEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5vWJ889UEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_KxbdELZKEeK8zaQi-hvdlw" clientDependency="_V114oL2QEeKKJJ5BmR3W3Q" name="stackmodel">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_k5v3oNITEeKovM8ingMMQQ">
+ <body>A LayerExpression allows to compute the properties of a specified view.&#xD;
+A LayerExpression is the common ancestor of Layer and LayerOperator.</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_V114oL2QEeKKJJ5BmR3W3Q" name="Dependency1" client="_KxbdELZKEeK8zaQi-hvdlw" supplier="_ShE8QL2QEeKKJJ5BmR3W3Q"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_t0NNoM9UEeKO_rl5MA6s9A" name="LayerStack">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_3hmqkM9VEeKO_rl5MA6s9A" name="diagram" type="_rqknoM9UEeKO_rl5MA6s9A" association="_3h0tAM9VEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3hmqkc9VEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3hmqks9VEeKO_rl5MA6s9A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_4B6F4NN0EeKwWoA8j13SIg" name="selectionManager" type="_iOVr4NN0EeKwWoA8j13SIg" association="_4CAMgNN0EeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4B6F4dN0EeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4B6F4tN0EeKwWoA8j13SIg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3h0tAM9VEeKO_rl5MA6s9A" name="layerStack_diagram_1" memberEnd="_3h0tAc9VEeKO_rl5MA6s9A _3hmqkM9VEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_3h0tAc9VEeKO_rl5MA6s9A" name="layerStack" type="_t0NNoM9UEeKO_rl5MA6s9A" association="_3h0tAM9VEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3h0tAs9VEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3h0tA89VEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_55Ll8M9VEeKO_rl5MA6s9A" name="namedStyle_layerStack_1" memberEnd="_55Ll8c9VEeKO_rl5MA6s9A _54-KkM9VEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_55Ll8c9VEeKO_rl5MA6s9A" name="namedStyle" type="_0Q5HwM9VEeKO_rl5MA6s9A" association="_55Ll8M9VEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_55Ll8s9VEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_55Ll889VEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_q3GegM-wEeKO_rl5MA6s9A" name="LayerExpression" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_unLCYNIXEeKovM8ingMMQQ" name="attachedViews" type="_kextsM-0EeKO_rl5MA6s9A" isDerived="true" association="_unRJANIXEeKovM8ingMMQQ">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_6FrGANIXEeKovM8ingMMQQ">
+ <body>List of views attached to the layerExpression. This is a derived properties.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_unLCYdIXEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_unLCYtIXEeKovM8ingMMQQ" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="__kusgNITEeKovM8ingMMQQ" name="getViewProperties">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Sz7FQNIUEeKovM8ingMMQQ">
+ <body>Get the property descriptors associated to the specified view.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_geO5INIUEeKovM8ingMMQQ" name="view" type="_j52EYNIUEeKovM8ingMMQQ"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_vg2jwNIUEeKovM8ingMMQQ" name="result" type="_UzekYM-yEeKO_rl5MA6s9A" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0CFTQNIUEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0CRggNIUEeKovM8ingMMQQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_8L56ENIUEeKovM8ingMMQQ" name="getViewPropertyValues">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_8L56EdIUEeKovM8ingMMQQ">
+ <body>Get the property values associated to the specified view.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8L56EtIUEeKovM8ingMMQQ" name="view" type="_j52EYNIUEeKovM8ingMMQQ"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8L56E9IUEeKovM8ingMMQQ" name="result" type="_l4yNkM-0EeKO_rl5MA6s9A" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8L56FNIUEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8L56FdIUEeKovM8ingMMQQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_LDqYgNIVEeKovM8ingMMQQ" name="getViewsPropertyValues">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_LDqYgdIVEeKovM8ingMMQQ">
+ <body>Get the property values associated to the specified view.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_LDqYgtIVEeKovM8ingMMQQ" name="view" type="_j52EYNIUEeKovM8ingMMQQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZfK_0NIVEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Zfl2kNIVEeKovM8ingMMQQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_LDqYg9IVEeKovM8ingMMQQ" name="views" type="_j52EYNIUEeKovM8ingMMQQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LDqYhNIVEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LDqYhdIVEeKovM8ingMMQQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_NfaCMNIVEeKovM8ingMMQQ" name="values" type="_l4yNkM-0EeKO_rl5MA6s9A" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NfaCMdIVEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NfaCMtIVEeKovM8ingMMQQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_SH5a0NIWEeKovM8ingMMQQ" name="getAvailableProperties">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_SH5a0dIWEeKovM8ingMMQQ">
+ <body>Get the property descriptors available from</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_SH5a09IWEeKovM8ingMMQQ" name="result" type="_UzekYM-yEeKO_rl5MA6s9A" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SH5a1NIWEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SH5a1dIWEeKovM8ingMMQQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_saCQ4M-wEeKO_rl5MA6s9A" name="LayerOperatorExpression" isAbstract="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_w9X5MM-wEeKO_rl5MA6s9A" general="_q3GegM-wEeKO_rl5MA6s9A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Jk2f4NIPEeKovM8ingMMQQ" name="expressions" type="_q3GegM-wEeKO_rl5MA6s9A" aggregation="composite" association="_JlCtINIPEeKovM8ingMMQQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jk2f4dIPEeKovM8ingMMQQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Jk2f4tIPEeKovM8ingMMQQ" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_uIcTcM-wEeKO_rl5MA6s9A" name="Layer" isAbstract="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_x2M-oM-wEeKO_rl5MA6s9A" general="_q3GegM-wEeKO_rl5MA6s9A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_rl4TQM-0EeKO_rl5MA6s9A" name="views" type="_kextsM-0EeKO_rl5MA6s9A" association="_rmCEQM-0EeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rl4TQc-0EeKO_rl5MA6s9A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rl4TQs-0EeKO_rl5MA6s9A" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_sdjiIM-0EeKO_rl5MA6s9A" name="propertyValues" type="_l4yNkM-0EeKO_rl5MA6s9A" isDerived="true" association="_sd2dEM-0EeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdjiIc-0EeKO_rl5MA6s9A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdjiIs-0EeKO_rl5MA6s9A" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_PYT20NIQEeKovM8ingMMQQ" name="availableProperties" type="_UzekYM-yEeKO_rl5MA6s9A" isDerived="true" association="_PYgEENIQEeKovM8ingMMQQ">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_sI_z8NIQEeKovM8ingMMQQ">
+ <body>Return a list of properties that this layer support. This is a derived property (from Layer descriptor).</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PYT20dIQEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PYT20tIQEeKovM8ingMMQQ" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_3x5JsNIQEeKovM8ingMMQQ" name="attachedProperties" type="_UzekYM-yEeKO_rl5MA6s9A" isDerived="true" association="_3yFW8NIQEeKovM8ingMMQQ">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_LuHnkNIREeKovM8ingMMQQ">
+ <body>Return a list of properties already attached to the Layer.&#xD;
+This is a derived property.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3x5JsdIQEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3x5JstIQEeKovM8ingMMQQ" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="__8qywNIQEeKovM8ingMMQQ" name="notAttachedProperties" type="_UzekYM-yEeKO_rl5MA6s9A" isDerived="true" association="__8-UwNIQEeKovM8ingMMQQ">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_ZhROYNIREeKovM8ingMMQQ">
+ <body>Return a list of not already attached properties. This is a derived property.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__8qywdIQEeKovM8ingMMQQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__8qywtIQEeKovM8ingMMQQ" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_AYzD8NeJEeKpd73UUMObaQ" name="setPropertyValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_HezdUNeJEeKpd73UUMObaQ" name="index" type="_-DoC8NIPEeKovM8ingMMQQ"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_LoMUkNeJEeKpd73UUMObaQ" name="value" type="_NwL70NeJEeKpd73UUMObaQ" direction="inout"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_aJy80NeJEeKpd73UUMObaQ" name="setPropertyValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_aJy80deJEeKpd73UUMObaQ" name="name" type="_70TEoNIPEeKovM8ingMMQQ"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_aJy80teJEeKpd73UUMObaQ" name="value" type="_NwL70NeJEeKpd73UUMObaQ" direction="inout"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_aou7kNeJEeKpd73UUMObaQ" name="setPropertyValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_aou7kdeJEeKpd73UUMObaQ" name="propDesc" type="_UzekYM-yEeKO_rl5MA6s9A"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_aou7kteJEeKpd73UUMObaQ" name="value" type="_NwL70NeJEeKpd73UUMObaQ" direction="inout"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_urYKgNeJEeKpd73UUMObaQ" name="getPropertyValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_urYKgdeJEeKpd73UUMObaQ" name="name" type="_70TEoNIPEeKovM8ingMMQQ"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_urYKgteJEeKpd73UUMObaQ" name="value" type="_NwL70NeJEeKpd73UUMObaQ" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_urhUcNeJEeKpd73UUMObaQ" name="getPropertyValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_urhUcdeJEeKpd73UUMObaQ" name="index" type="_-DoC8NIPEeKovM8ingMMQQ"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_urhUcteJEeKpd73UUMObaQ" name="value" type="_NwL70NeJEeKpd73UUMObaQ" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_uropMNeJEeKpd73UUMObaQ" name="getPropertyValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_urpQQNeJEeKpd73UUMObaQ" name="propDesc" type="_UzekYM-yEeKO_rl5MA6s9A"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_urpQQdeJEeKpd73UUMObaQ" name="value" type="_NwL70NeJEeKpd73UUMObaQ" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_zRG2YM-wEeKO_rl5MA6s9A" name="Class1" isAbstract="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_pd8dwM-xEeKO_rl5MA6s9A" general="_saCQ4M-wEeKO_rl5MA6s9A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_awVkYM-yEeKO_rl5MA6s9A" name="propertyOperators" type="_SZ1McM-yEeKO_rl5MA6s9A" aggregation="composite" association="_awpGYM-yEeKO_rl5MA6s9A">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_KvpSgM-zEeKO_rl5MA6s9A">
+ <body>Collection of property operators used to compute two operands. Each property operator is designed to &#xD;
+operate on one type of property.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_awVkYc-yEeKO_rl5MA6s9A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_awVkYs-yEeKO_rl5MA6s9A" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_cLZCkM-xEeKO_rl5MA6s9A" name="CustomOperator">
+ <generalization xmi:type="uml:Generalization" xmi:id="_ooh4sM-xEeKO_rl5MA6s9A" general="_saCQ4M-wEeKO_rl5MA6s9A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hp55sM-xEeKO_rl5MA6s9A" name="StackedOperator">
+ <generalization xmi:type="uml:Generalization" xmi:id="_qGHRAM-xEeKO_rl5MA6s9A" general="_zRG2YM-wEeKO_rl5MA6s9A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jAMXMM-xEeKO_rl5MA6s9A" name="TopOperator">
+ <generalization xmi:type="uml:Generalization" xmi:id="_quvXQM-xEeKO_rl5MA6s9A" general="_zRG2YM-wEeKO_rl5MA6s9A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_t0KQEM-xEeKO_rl5MA6s9A" name="SimpleLayer">
+ <generalization xmi:type="uml:Generalization" xmi:id="_yiCUcM-xEeKO_rl5MA6s9A" general="_uIcTcM-wEeKO_rl5MA6s9A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_u6-HIM-xEeKO_rl5MA6s9A" name="RegExpLayer">
+ <generalization xmi:type="uml:Generalization" xmi:id="_zKNHsM-xEeKO_rl5MA6s9A" general="_uIcTcM-wEeKO_rl5MA6s9A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_pRx2AFzHEeOeP67GJGKDkA" name="expressionMatcher" type="_sc15QFzGEeOeP67GJGKDkA" aggregation="composite" association="_pR38oFzHEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pRx2AVzHEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pRx2AlzHEeOeP67GJGKDkA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_LTBBsEysEeObF6ELIGKT-g" name="computeExpression"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SZ1McM-yEeKO_rl5MA6s9A" name="PropertyOperator" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_lk1MQM-zEeKO_rl5MA6s9A">
+ <body>An operator used to compute two operands. The operator is designed to operate on specified property.</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_mjPKsM-yEeKO_rl5MA6s9A" name="propertyDescriptor" type="_UzekYM-yEeKO_rl5MA6s9A" association="_mjiFoM-yEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mjPKsc-yEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mjPKss-yEeKO_rl5MA6s9A" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UzekYM-yEeKO_rl5MA6s9A" name="PropertyDescriptor">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_xNNKINIPEeKovM8ingMMQQ" name="name" visibility="public" type="_70TEoNIPEeKovM8ingMMQQ" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CadgUNIQEeKovM8ingMMQQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CariwNIQEeKovM8ingMMQQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_CbWRINIQEeKovM8ingMMQQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_C8tRwNIQEeKovM8ingMMQQ" name="icon" visibility="public" type="_GiHSMNIQEeKovM8ingMMQQ" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JxGWsNIQEeKovM8ingMMQQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JxYqkNIQEeKovM8ingMMQQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_JyDY8NIQEeKovM8ingMMQQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_cX5PQNeNEeKpd73UUMObaQ" name="defaultValue" type="_l4yNkM-0EeKO_rl5MA6s9A" aggregation="composite" association="_cYKVANeNEeKpd73UUMObaQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cX5PQdeNEeKpd73UUMObaQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cX5PQteNEeKpd73UUMObaQ" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_NDsscNeNEeKpd73UUMObaQ" name="newPropertyValueInstance"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_awpGYM-yEeKO_rl5MA6s9A" name="class1_propertyOperator_1" memberEnd="_awpGYc-yEeKO_rl5MA6s9A _awVkYM-yEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_awpGYc-yEeKO_rl5MA6s9A" name="class1" type="_zRG2YM-wEeKO_rl5MA6s9A" association="_awpGYM-yEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_awpGYs-yEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_awpGY8-yEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_mjiFoM-yEeKO_rl5MA6s9A" name="propertyOperator_propertyDescriptor_1" memberEnd="_mjiFoc-yEeKO_rl5MA6s9A _mjPKsM-yEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_mjiFoc-yEeKO_rl5MA6s9A" name="propertyOperator" type="_SZ1McM-yEeKO_rl5MA6s9A" association="_mjiFoM-yEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mjiFos-yEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mjiFo8-yEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_kextsM-0EeKO_rl5MA6s9A" name="View"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_l4yNkM-0EeKO_rl5MA6s9A" name="TypeValue">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_OFQ7wM-5EeKO_rl5MA6s9A" name="descriptor" type="_UzekYM-yEeKO_rl5MA6s9A" association="_OFj2sM-5EeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OFQ7wc-5EeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OFQ7ws-5EeKO_rl5MA6s9A" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_rmCEQM-0EeKO_rl5MA6s9A" name="layer_view_1" memberEnd="_rmCEQc-0EeKO_rl5MA6s9A _rl4TQM-0EeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_rmCEQc-0EeKO_rl5MA6s9A" name="layer" type="_uIcTcM-wEeKO_rl5MA6s9A" association="_rmCEQM-0EeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rmCEQs-0EeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rmCEQ8-0EeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_sd2dEM-0EeKO_rl5MA6s9A" name="layer_propertyValue_1" memberEnd="_sd2dEc-0EeKO_rl5MA6s9A _sdjiIM-0EeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_sd2dEc-0EeKO_rl5MA6s9A" name="layer" type="_uIcTcM-wEeKO_rl5MA6s9A" association="_sd2dEM-0EeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sd2dEs-0EeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sd2dE8-0EeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_OFj2sM-5EeKO_rl5MA6s9A" name="propertyValue_propertyDescriptor_1" memberEnd="_OFj2sc-5EeKO_rl5MA6s9A _OFQ7wM-5EeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_OFj2sc-5EeKO_rl5MA6s9A" name="propertyValue" type="_l4yNkM-0EeKO_rl5MA6s9A" association="_OFj2sM-5EeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OFj2ss-5EeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OFj2s8-5EeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JlCtINIPEeKovM8ingMMQQ" name="operatorExpression_layerExpression_1" memberEnd="_JlCtIdIPEeKovM8ingMMQQ _Jk2f4NIPEeKovM8ingMMQQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_JlCtIdIPEeKovM8ingMMQQ" name="operatorExpression" type="_saCQ4M-wEeKO_rl5MA6s9A" association="_JlCtINIPEeKovM8ingMMQQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JlCtItIPEeKovM8ingMMQQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JlCtI9IPEeKovM8ingMMQQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_PYgEENIQEeKovM8ingMMQQ" name="layer_propertyDescriptor_1" memberEnd="_PYgEEdIQEeKovM8ingMMQQ _PYT20NIQEeKovM8ingMMQQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_PYgEEdIQEeKovM8ingMMQQ" name="layer" type="_q3GegM-wEeKO_rl5MA6s9A" association="_PYgEENIQEeKovM8ingMMQQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PYgEEtIQEeKovM8ingMMQQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PYgEE9IQEeKovM8ingMMQQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3yFW8NIQEeKovM8ingMMQQ" name="layerExpression_propertyDescriptor_2" memberEnd="_3yFW8dIQEeKovM8ingMMQQ _3x5JsNIQEeKovM8ingMMQQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_3yFW8dIQEeKovM8ingMMQQ" name="expr" type="_q3GegM-wEeKO_rl5MA6s9A" association="_3yFW8NIQEeKovM8ingMMQQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3yFW8tIQEeKovM8ingMMQQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3yFW89IQEeKovM8ingMMQQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="__8-UwNIQEeKovM8ingMMQQ" name="layer_propertyDescriptor_3" memberEnd="__8-UwdIQEeKovM8ingMMQQ __8qywNIQEeKovM8ingMMQQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="__8-UwdIQEeKovM8ingMMQQ" name="layer" type="_uIcTcM-wEeKO_rl5MA6s9A" association="__8-UwNIQEeKovM8ingMMQQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__8-UwtIQEeKovM8ingMMQQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__8-Uw9IQEeKovM8ingMMQQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_unRJANIXEeKovM8ingMMQQ" name="layerExpression_view_1" memberEnd="_unRJAdIXEeKovM8ingMMQQ _unLCYNIXEeKovM8ingMMQQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_unRJAdIXEeKovM8ingMMQQ" name="layerExpression" type="_q3GegM-wEeKO_rl5MA6s9A" association="_unRJANIXEeKovM8ingMMQQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_unRJAtIXEeKovM8ingMMQQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_unRJA9IXEeKovM8ingMMQQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3qy5UNNnEeKwWoA8j13SIg" name="LayerStacks">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_QvVU0NNoEeKwWoA8j13SIg">
+ <body>Entry point of the model.&#xD;
+LayerStack are associated to their diagram.&#xD;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_8-4CENNnEeKwWoA8j13SIg" name="layerStacks" type="_t0NNoM9UEeKO_rl5MA6s9A" aggregation="composite" association="_8_KV8NNnEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8-4CEdNnEeKwWoA8j13SIg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8-4CEtNnEeKwWoA8j13SIg" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_8_KV8NNnEeKwWoA8j13SIg" name="layerStacks_layerStack_1" memberEnd="_8_KV8dNnEeKwWoA8j13SIg _8-4CENNnEeKwWoA8j13SIg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_8_KV8dNnEeKwWoA8j13SIg" name="layerStacks" type="_3qy5UNNnEeKwWoA8j13SIg" association="_8_KV8NNnEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8_KV8tNnEeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8_KV89NnEeKwWoA8j13SIg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_iOVr4NN0EeKwWoA8j13SIg" name="SelectionManager">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Rkak4NN3EeKwWoA8j13SIg">
+ <body>This class is used to maintain the current layer selected.&#xD;
+It listen on LayerStack event, and set the current layer accordingly.&#xD;
+The current layer can also be set by methods.&#xD;
+The class can be observed to listen to selection changed.</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_zPQPMNN0EeKwWoA8j13SIg" name="currentLayer" visibility="public" type="_uIcTcM-wEeKO_rl5MA6s9A" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2bmPYNN0EeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2b4jQNN0EeKwWoA8j13SIg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2cu30NN0EeKwWoA8j13SIg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_4CAMgNN0EeKwWoA8j13SIg" name="layerStack_selectionManager_1" memberEnd="_4CAMgdN0EeKwWoA8j13SIg _4B6F4NN0EeKwWoA8j13SIg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_4CAMgdN0EeKwWoA8j13SIg" name="layerStack" type="_t0NNoM9UEeKO_rl5MA6s9A" association="_4CAMgNN0EeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4CAMgtN0EeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4CAMg9N0EeKwWoA8j13SIg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_OS41oNNqEeKwWoA8j13SIg" clientDependency="_TW8v8NNrEeKwWoA8j13SIg _XY1RANNrEeKwWoA8j13SIg" name="ILayersModelEventListener">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_SmexwNNqEeKwWoA8j13SIg" name="propertyValueAdded">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_eeKKYNNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_htRxwNNqEeKwWoA8j13SIg" name="propertyValueRemoved">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_htRxwdNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_h5JDgNNqEeKwWoA8j13SIg" name="propertyValueChanged">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_h5JDgdNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_h69BYNNqEeKwWoA8j13SIg" name="layerAdded">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_h69BYdNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_iGe78NNqEeKwWoA8j13SIg" name="layerRemoved">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_iGe78dNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_iKn1ENNqEeKwWoA8j13SIg" name="layerMoved">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_iKn1EdNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_iUNO4NNqEeKwWoA8j13SIg" name="layerStackEnable">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_iUNO4dNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_1WChENNqEeKwWoA8j13SIg" name="layerStackDisable">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_1WChEdNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_1iV3sNNqEeKwWoA8j13SIg" name="viewAddedToLayer">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_1iV3sdNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_1mcUkNNqEeKwWoA8j13SIg" name="viewRemovedFromLayer">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_1mcUkdNqEeKwWoA8j13SIg" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_94G1IN9lEeKCZbxNW-U3VQ" name="viewMovedBetweenLayers">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_94G1Id9lEeKCZbxNW-U3VQ" name="event" type="_XbvQgNNqEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_XbvQgNNqEeKwWoA8j13SIg" name="LayersModelEvent"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_TW8v8NNrEeKwWoA8j13SIg" name="listenOn" client="_OS41oNNqEeKwWoA8j13SIg" supplier="_t0NNoM9UEeKO_rl5MA6s9A"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_XY1RANNrEeKwWoA8j13SIg" name="Dependency2" client="_OS41oNNqEeKwWoA8j13SIg" supplier="_XbvQgNNqEeKwWoA8j13SIg"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_WMWIcNeMEeKpd73UUMObaQ" name="PropertyFactory">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_H-rd8NeOEeKpd73UUMObaQ" name="propertyDescriptors" type="_UzekYM-yEeKO_rl5MA6s9A" association="_H-9x0NeOEeKpd73UUMObaQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_H-rd8deOEeKpd73UUMObaQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_H-rd8teOEeKpd73UUMObaQ" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_cYKVANeNEeKpd73UUMObaQ" name="propertyDescriptor_propertyValue_1" memberEnd="_cYKVAdeNEeKpd73UUMObaQ _cX5PQNeNEeKpd73UUMObaQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_cYKVAdeNEeKpd73UUMObaQ" name="propertyDescriptor" type="_UzekYM-yEeKO_rl5MA6s9A" association="_cYKVANeNEeKpd73UUMObaQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cYKVAteNEeKpd73UUMObaQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cYKVA9eNEeKpd73UUMObaQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_H-9x0NeOEeKpd73UUMObaQ" name="propertyFactory_propertyDescriptor_1" memberEnd="_H-9x0deOEeKpd73UUMObaQ _H-rd8NeOEeKpd73UUMObaQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_H-9x0deOEeKpd73UUMObaQ" name="propertyFactory" type="_WMWIcNeMEeKpd73UUMObaQ" association="_H-9x0NeOEeKpd73UUMObaQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_H-9x0teOEeKpd73UUMObaQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_H-9x09eOEeKpd73UUMObaQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_Gkz8QEyjEeObF6ELIGKT-g" name="notifiers">
+ <packagedElement xmi:type="uml:Class" xmi:id="_JwRLoEyjEeObF6ELIGKT-g" clientDependency="_SokpEEyjEeObF6ELIGKT-g" name="DiagramViewEventNotifier">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_h14fwEyuEeObF6ELIGKT-g" name="stopListening"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_h15G0EyuEeObF6ELIGKT-g" name="startListening"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_HJLoANNqEeKwWoA8j13SIg" name="IDiagramViewEventListener">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_JZ7ioNNqEeKwWoA8j13SIg" name="viewAddedEvent"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Ft6TwN9mEeKCZbxNW-U3VQ" name="viewRemovedEvent"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_SokpEEyjEeObF6ELIGKT-g" name="Usage1" client="_JwRLoEyjEeObF6ELIGKT-g" supplier="_HJLoANNqEeKwWoA8j13SIg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_pR38oFzHEeOeP67GJGKDkA" name="regExpLayer_expressionMatcher_1" memberEnd="_pR38oVzHEeOeP67GJGKDkA _pRx2AFzHEeOeP67GJGKDkA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_pR38oVzHEeOeP67GJGKDkA" name="regExpLayer" type="_u6-HIM-xEeKO_rl5MA6s9A" association="_pR38oFzHEeOeP67GJGKDkA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pR38olzHEeOeP67GJGKDkA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pR38o1zHEeOeP67GJGKDkA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_ShE8QL2QEeKKJJ5BmR3W3Q" name="notation">
+ <packagedElement xmi:type="uml:Class" xmi:id="_rqknoM9UEeKO_rl5MA6s9A" name="Diagram">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_5PP4IM9VEeKO_rl5MA6s9A" name="namedStyle" type="_0Q5HwM9VEeKO_rl5MA6s9A" association="_5PcFYM9VEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5PP4Ic9VEeKO_rl5MA6s9A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PP4Is9VEeKO_rl5MA6s9A" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_5PcFYM9VEeKO_rl5MA6s9A" name="diagram_namedStyle_1" memberEnd="_5PcFYc9VEeKO_rl5MA6s9A _5PP4IM9VEeKO_rl5MA6s9A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_5PcFYc9VEeKO_rl5MA6s9A" name="diagram" type="_rqknoM9UEeKO_rl5MA6s9A" association="_5PcFYM9VEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5PcFYs9VEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5PcFY89VEeKO_rl5MA6s9A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_0Q5HwM9VEeKO_rl5MA6s9A" name="NamedStyle">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_54-KkM9VEeKO_rl5MA6s9A" name="value" type="_t0NNoM9UEeKO_rl5MA6s9A" association="_55Ll8M9VEeKO_rl5MA6s9A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_54-Kkc9VEeKO_rl5MA6s9A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_54-Kks9VEeKO_rl5MA6s9A" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_j52EYNIUEeKovM8ingMMQQ" name="View"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_4GLNENIPEeKovM8ingMMQQ" name="datatypes">
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_70TEoNIPEeKovM8ingMMQQ" name="String"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_9KgpoNIPEeKovM8ingMMQQ" name="boolean"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_-DoC8NIPEeKovM8ingMMQQ" name="int"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_GiHSMNIQEeKovM8ingMMQQ" name="Icon"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_NwL70NeJEeKpd73UUMObaQ" name="Object"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_3PV9kNLREeKwWoA8j13SIg" name="patterns">
+ <packagedElement xmi:type="uml:Package" xmi:id="_93lc4NLREeKwWoA8j13SIg" name="eventProviderOneListener">
+ <packagedElement xmi:type="uml:Class" xmi:id="_FpeE0NLSEeKwWoA8j13SIg" clientDependency="_vlovUNLTEeKwWoA8j13SIg" name="ClassnameEventProvider">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_qQgTINLSEeKwWoA8j13SIg" name="eventListener" type="_MFiwYNLSEeKwWoA8j13SIg" association="_qQmZwNLSEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qQgTIdLSEeKwWoA8j13SIg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qQgTItLSEeKwWoA8j13SIg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="___ERUNLSEeKwWoA8j13SIg" name="addClassnameEventListener">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_K04kUNLTEeKwWoA8j13SIg" name="listener" type="_MFiwYNLSEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_OXuY8NLTEeKwWoA8j13SIg" name="removeClassnameEventListener">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_OXuY8dLTEeKwWoA8j13SIg" name="listener" type="_MFiwYNLSEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_c-YVwNLSEeKwWoA8j13SIg" name="fireName1Event">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_k6tTINLSEeKwWoA8j13SIg" name="event" type="_TqDqsNLSEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_dAOTYNLTEeKwWoA8j13SIg" name="fireName2Event">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_dAOTYdLTEeKwWoA8j13SIg" name="event" type="_TqDqsNLSEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_MFiwYNLSEeKwWoA8j13SIg" clientDependency="_wSvs8NLTEeKwWoA8j13SIg" name="IClassnameEventListener">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_7UNrwNLSEeKwWoA8j13SIg" name="name1Event">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_7UNrwdLSEeKwWoA8j13SIg" name="event" type="_TqDqsNLSEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_hnQI4NLTEeKwWoA8j13SIg" name="name2Event">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hnQI4dLTEeKwWoA8j13SIg" name="event" type="_TqDqsNLSEeKwWoA8j13SIg"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TqDqsNLSEeKwWoA8j13SIg" name="ClassnameEvent">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_1Q1-oNLTEeKwWoA8j13SIg">
+ <body>The Event class is used to carry data from the sender to the listener.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_qQmZwNLSEeKwWoA8j13SIg" name="classnameEventProvider_iClassnameEventListener_1" memberEnd="_qQmZwdLSEeKwWoA8j13SIg _qQgTINLSEeKwWoA8j13SIg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_qQmZwdLSEeKwWoA8j13SIg" name="classnameEventProvider" type="_FpeE0NLSEeKwWoA8j13SIg" association="_qQmZwNLSEeKwWoA8j13SIg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qQmZwtLSEeKwWoA8j13SIg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qQmZw9LSEeKwWoA8j13SIg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_vlovUNLTEeKwWoA8j13SIg" name="Dependency1" client="_FpeE0NLSEeKwWoA8j13SIg" supplier="_TqDqsNLSEeKwWoA8j13SIg"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_wSvs8NLTEeKwWoA8j13SIg" name="" client="_MFiwYNLSEeKwWoA8j13SIg" supplier="_TqDqsNLSEeKwWoA8j13SIg"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_Hq1QwNRgEeKHbZ6TDsPmrQ" name="design">
+ <packagedElement xmi:type="uml:Package" xmi:id="_MIZBMNRgEeKHbZ6TDsPmrQ" name="extensible properties">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_8tJPoNRpEeKHbZ6TDsPmrQ">
+ <body>Type and TypeValue are part of the system ?</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_4zs_QNRxEeKHbZ6TDsPmrQ">
+ <body>LayerDescriptor and Property are not saved with LayerStack</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_WWBS0NRgEeKHbZ6TDsPmrQ" name="Property">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_bo_oUNRgEeKHbZ6TDsPmrQ" name="type" type="_XqHX8NRgEeKHbZ6TDsPmrQ" association="_bpFu8NRgEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bo_oUdRgEeKHbZ6TDsPmrQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bo_oUtRgEeKHbZ6TDsPmrQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_h2j90NRgEeKHbZ6TDsPmrQ" name="name" visibility="public" type="_70TEoNIPEeKovM8ingMMQQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ko6JoNRgEeKHbZ6TDsPmrQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kpG98NRgEeKHbZ6TDsPmrQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_kp95kNRgEeKHbZ6TDsPmrQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_XqHX8NRgEeKHbZ6TDsPmrQ" name="Type"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Y8NR8NRgEeKHbZ6TDsPmrQ" name="PropertyValue">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_HqSBsNRhEeKHbZ6TDsPmrQ" name="typeValue" type="_F0T-kNRhEeKHbZ6TDsPmrQ" association="_HqkVkNRhEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HqSBsdRhEeKHbZ6TDsPmrQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HqSBstRhEeKHbZ6TDsPmrQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IvGUsNRhEeKHbZ6TDsPmrQ" name="property" type="_WWBS0NRgEeKHbZ6TDsPmrQ" association="_IvSh8NRhEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IvGUsdRhEeKHbZ6TDsPmrQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IvGUstRhEeKHbZ6TDsPmrQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_bpFu8NRgEeKHbZ6TDsPmrQ" name="property_type_1" memberEnd="_bpFu8dRgEeKHbZ6TDsPmrQ _bo_oUNRgEeKHbZ6TDsPmrQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_bpFu8dRgEeKHbZ6TDsPmrQ" name="property" type="_WWBS0NRgEeKHbZ6TDsPmrQ" association="_bpFu8NRgEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bpFu8tRgEeKHbZ6TDsPmrQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bpFu89RgEeKHbZ6TDsPmrQ" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_dFTOQNRgEeKHbZ6TDsPmrQ" name="LayerDescriptor">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_gXohsNRgEeKHbZ6TDsPmrQ" name="AllowedProperties" type="_WWBS0NRgEeKHbZ6TDsPmrQ" aggregation="composite" association="_gX0u8NRgEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gXohsdRgEeKHbZ6TDsPmrQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gXohstRgEeKHbZ6TDsPmrQ" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_gX0u8NRgEeKHbZ6TDsPmrQ" name="layerDescriptor_property_1" memberEnd="_gX0u8dRgEeKHbZ6TDsPmrQ _gXohsNRgEeKHbZ6TDsPmrQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_gX0u8dRgEeKHbZ6TDsPmrQ" name="layerDescriptor" type="_dFTOQNRgEeKHbZ6TDsPmrQ" association="_gX0u8NRgEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gX0u8tRgEeKHbZ6TDsPmrQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gX0u89RgEeKHbZ6TDsPmrQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_BrSTsNRhEeKHbZ6TDsPmrQ" name="Layer">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_EeaioNRhEeKHbZ6TDsPmrQ" name="propertyValue" type="_Y8NR8NRgEeKHbZ6TDsPmrQ" association="_Eemv4NRhEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EeaiodRhEeKHbZ6TDsPmrQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EeaiotRhEeKHbZ6TDsPmrQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Eemv4NRhEeKHbZ6TDsPmrQ" name="layer_propertyValue_1" memberEnd="_Eemv4dRhEeKHbZ6TDsPmrQ _EeaioNRhEeKHbZ6TDsPmrQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_Eemv4dRhEeKHbZ6TDsPmrQ" name="layer" type="_BrSTsNRhEeKHbZ6TDsPmrQ" association="_Eemv4NRhEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Eemv4tRhEeKHbZ6TDsPmrQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Eemv49RhEeKHbZ6TDsPmrQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_F0T-kNRhEeKHbZ6TDsPmrQ" name="TypeValue"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_HqkVkNRhEeKHbZ6TDsPmrQ" name="propertyValue_typeValue_1" memberEnd="_HqkVkdRhEeKHbZ6TDsPmrQ _HqSBsNRhEeKHbZ6TDsPmrQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_HqkVkdRhEeKHbZ6TDsPmrQ" name="propertyValue" type="_Y8NR8NRgEeKHbZ6TDsPmrQ" association="_HqkVkNRhEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HqkVktRhEeKHbZ6TDsPmrQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HqkVk9RhEeKHbZ6TDsPmrQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_IvSh8NRhEeKHbZ6TDsPmrQ" name="propertyValue_property_1" memberEnd="_IvSh8dRhEeKHbZ6TDsPmrQ _IvGUsNRhEeKHbZ6TDsPmrQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_IvSh8dRhEeKHbZ6TDsPmrQ" name="propertyValue" type="_Y8NR8NRgEeKHbZ6TDsPmrQ" association="_IvSh8NRhEeKHbZ6TDsPmrQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IvSh8tRhEeKHbZ6TDsPmrQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IvSh89RhEeKHbZ6TDsPmrQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_pa8XAHh8EeOlpfB_tZS-QA" name="layers life cycle">
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_sqYugHh8EeOlpfB_tZS-QA" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_uQQgIHh8EeOlpfB_tZS-QA" name="Region1">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_A8brYHh9EeOlpfB_tZS-QA" annotatedElement="_5CvLQHh8EeOlpfB_tZS-QA">
+ <body>Attached to a LayersStack.&#xD;
+All attributes are set: &#xD;
+ - owningLayersStack&#xD;
+ - application&#xD;
+ - parent/container&#xD;
+</body>
+ </ownedComment>
+ <transition xmi:type="uml:Transition" xmi:id="_QzWgwHh9EeOlpfB_tZS-QA" name="createLayerXxx()" source="_vdgWYHh8EeOlpfB_tZS-QA" target="_wpIcAHh8EeOlpfB_tZS-QA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_T3PIgHh9EeOlpfB_tZS-QA" name="model.load()" source="_SOtrgHh9EeOlpfB_tZS-QA" target="_1L6DoHh8EeOlpfB_tZS-QA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_Wz5G4Hh9EeOlpfB_tZS-QA" name="detach()" source="_5CvLQHh8EeOlpfB_tZS-QA" target="_88sfYHh8EeOlpfB_tZS-QA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_X_U_QHh9EeOlpfB_tZS-QA" name="attach(diagramProvider)" source="_88sfYHh8EeOlpfB_tZS-QA" target="_5CvLQHh8EeOlpfB_tZS-QA">
+ <trigger xmi:type="uml:Trigger" xmi:id="_YoUxkHiAEeOlpfB_tZS-QA" name="attach(DiagramProvider)"/>
+ <trigger xmi:type="uml:Trigger" xmi:id="_ca2A8HiAEeOlpfB_tZS-QA" name="attach(DiagramProvider, Application)"/>
+ </transition>
+ <transition xmi:type="uml:Transition" xmi:id="_ZpOVQHh9EeOlpfB_tZS-QA" name="parent.add" source="_wpIcAHh8EeOlpfB_tZS-QA" target="_5CvLQHh8EeOlpfB_tZS-QA">
+ <trigger xmi:type="uml:Trigger" xmi:id="_teoZcHh9EeOlpfB_tZS-QA" name="parent.layers.add"/>
+ </transition>
+ <transition xmi:type="uml:Transition" xmi:id="_a0LsgHh9EeOlpfB_tZS-QA" name="startAfterReload()" source="_1L6DoHh8EeOlpfB_tZS-QA" target="_5CvLQHh8EeOlpfB_tZS-QA"/>
+ <subvertex xmi:type="uml:Pseudostate" xmi:id="_vdgWYHh8EeOlpfB_tZS-QA" name="create"/>
+ <subvertex xmi:type="uml:State" xmi:id="_wpIcAHh8EeOlpfB_tZS-QA" name="created"/>
+ <subvertex xmi:type="uml:State" xmi:id="_1L6DoHh8EeOlpfB_tZS-QA" name="reloaded"/>
+ <subvertex xmi:type="uml:State" xmi:id="_5CvLQHh8EeOlpfB_tZS-QA" name="attached"/>
+ <subvertex xmi:type="uml:State" xmi:id="_88sfYHh8EeOlpfB_tZS-QA" name="detached"/>
+ <subvertex xmi:type="uml:Pseudostate" xmi:id="_SOtrgHh9EeOlpfB_tZS-QA" name="load model"/>
+ </region>
+ </packagedElement>
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_E3DwEHiMEeOlpfB_tZS-QA" name="StateMachine2">
+ <region xmi:type="uml:Region" xmi:id="_GqKscHiMEeOlpfB_tZS-QA" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_QsmasHiMEeOlpfB_tZS-QA" name="Transition0" source="_IRX60HiMEeOlpfB_tZS-QA" target="_IqdJMHiMEeOlpfB_tZS-QA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_S2BlUHiMEeOlpfB_tZS-QA" name="Transition1" source="_IqdJMHiMEeOlpfB_tZS-QA" target="_KcUvcHiMEeOlpfB_tZS-QA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_T6ZzcHiMEeOlpfB_tZS-QA" name="Transition2" source="_IqdJMHiMEeOlpfB_tZS-QA" target="_M9r48HiMEeOlpfB_tZS-QA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_VI4_0HiMEeOlpfB_tZS-QA" name="attach (all cond=true)" source="_M9r48HiMEeOlpfB_tZS-QA" target="_KcUvcHiMEeOlpfB_tZS-QA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_WOy38HiMEeOlpfB_tZS-QA" name="detach" source="_KcUvcHiMEeOlpfB_tZS-QA" target="_M9r48HiMEeOlpfB_tZS-QA"/>
+ <subvertex xmi:type="uml:Pseudostate" xmi:id="_IRX60HiMEeOlpfB_tZS-QA" name="Initial0"/>
+ <subvertex xmi:type="uml:State" xmi:id="_IqdJMHiMEeOlpfB_tZS-QA" name="new"/>
+ <subvertex xmi:type="uml:State" xmi:id="_KcUvcHiMEeOlpfB_tZS-QA" name="attached"/>
+ <subvertex xmi:type="uml:State" xmi:id="_M9r48HiMEeOlpfB_tZS-QA" name="detached"/>
+ </region>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_0oBF4EyqEeObF6ELIGKT-g" name="emf">
+ <packagedElement xmi:type="uml:Class" xmi:id="_3MwTgEyqEeObF6ELIGKT-g" name="EObject"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_hGB24IeYEeOyqaF0O659SA" name="generated"/>
+ <packagedElement xmi:type="uml:Model" xmi:id="_hG5ZkIeYEeOyqaF0O659SA" name="layers">
+ <packagedElement xmi:type="uml:Package" xmi:id="_hG5ZkYeYEeOyqaF0O659SA" name="org">
+ <packagedElement xmi:type="uml:Package" xmi:id="_hG5ZkoeYEeOyqaF0O659SA" name="eclipse">
+ <packagedElement xmi:type="uml:Package" xmi:id="_hG5Zk4eYEeOyqaF0O659SA" name="papyrus">
+ <packagedElement xmi:type="uml:Package" xmi:id="_hG5ZlIeYEeOyqaF0O659SA" name="layers">
+ <packagedElement xmi:type="uml:Package" xmi:id="_hG5ZlYeYEeOyqaF0O659SA" name="stackmodel">
+ <packagedElement xmi:type="uml:Package" xmi:id="_hG5ZloeYEeOyqaF0O659SA" name="layers">
+ <packagedElement xmi:type="uml:Interface" xmi:id="_hG_gMIeYEeOyqaF0O659SA" name="LayersFactoryForStack">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hG_gMYeYEeOyqaF0O659SA">
+ <body>
+ * &lt;!-- begin-user-doc -->
+ * The &lt;b>Factory&lt;/b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * &lt;!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage
+ * @generated
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_hG_gMoeYEeOyqaF0O659SA" name="eINSTANCE" type="_hG_gMIeYEeOyqaF0O659SA" isUnique="false">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hG_gM4eYEeOyqaF0O659SA">
+ <body>
+ * The singleton instance of the factory.
+ * &lt;!-- begin-user-doc -->
+ * &lt;!-- end-user-doc -->
+ * @generated
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_hG_gNIeYEeOyqaF0O659SA" name="createLayersStack">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hG_gNYeYEeOyqaF0O659SA">
+ <body>
+ * Returns a new object of class '&lt;em>Stack&lt;/em>'.
+ * &lt;!-- begin-user-doc -->
+ * &lt;!-- end-user-doc -->
+ * @return a new object of class '&lt;em>Stack&lt;/em>'.
+ * @generated
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hG_gN4eYEeOyqaF0O659SA" type="_hG_gNoeYEeOyqaF0O659SA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_hHFm0oeYEeOyqaF0O659SA" name="createLayer" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hHFm04eYEeOyqaF0O659SA">
+ <body>
+ * Returns a new object of class '&lt;em>Layer&lt;/em>'.
+ * &lt;!-- begin-user-doc -->
+ * &lt;!-- end-user-doc -->
+ * @return a new object of class '&lt;em>Layer&lt;/em>'.
+ * @generated NOT
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm1IeYEeOyqaF0O659SA" type="_uIcTcM-wEeKO_rl5MA6s9A" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm1YeYEeOyqaF0O659SA" name="parent" type="_hHFm0IeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm1oeYEeOyqaF0O659SA" name="owningStack" type="_hG_gNoeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm14eYEeOyqaF0O659SA" name="application" type="_hHFm0YeYEeOyqaF0O659SA"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_hHFm2IeYEeOyqaF0O659SA" name="createRegExpLayer" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hHFm2YeYEeOyqaF0O659SA">
+ <body>
+ * Returns a new object of class '&lt;em>Reg Exp Layer&lt;/em>'.
+ * &lt;!-- begin-user-doc -->
+ * &lt;!-- end-user-doc -->
+ * @return a new object of class '&lt;em>Reg Exp Layer&lt;/em>'.
+ * @throws LayersException
+ * @generated
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm2oeYEeOyqaF0O659SA" type="_u6-HIM-xEeKO_rl5MA6s9A" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm24eYEeOyqaF0O659SA" name="parent" type="_hHFm0IeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm3IeYEeOyqaF0O659SA" name="owningStack" type="_hG_gNoeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm3YeYEeOyqaF0O659SA" name="application" type="_hHFm0YeYEeOyqaF0O659SA"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_hHFm3oeYEeOyqaF0O659SA" name="createTopLayerOperator" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hHFm34eYEeOyqaF0O659SA">
+ <body>
+ * Returns a new object of class '&lt;em>Top Layer Operator&lt;/em>'.
+ * &lt;!-- begin-user-doc -->
+ * &lt;!-- end-user-doc -->
+ * @return a new object of class '&lt;em>Top Layer Operator&lt;/em>'.
+ * @generated
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm4YeYEeOyqaF0O659SA" type="_hHFm4IeYEeOyqaF0O659SA" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm4oeYEeOyqaF0O659SA" name="parent" type="_hHFm0IeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm44eYEeOyqaF0O659SA" name="owningStack" type="_hG_gNoeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm5IeYEeOyqaF0O659SA" name="application" type="_hHFm0YeYEeOyqaF0O659SA"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_hHFm5YeYEeOyqaF0O659SA" name="createStackedLayerOperator" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hHFm5oeYEeOyqaF0O659SA">
+ <body>
+ * Returns a new object of class '&lt;em>Stacked Layer Operator&lt;/em>'.
+ * &lt;!-- begin-user-doc -->
+ * &lt;!-- end-user-doc -->
+ * @return a new object of class '&lt;em>Stacked Layer Operator&lt;/em>'.
+ * @generated
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm6IeYEeOyqaF0O659SA" type="_hHFm54eYEeOyqaF0O659SA" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm6YeYEeOyqaF0O659SA" name="parent" type="_hHFm0IeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm6oeYEeOyqaF0O659SA" name="owningStack" type="_hG_gNoeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm64eYEeOyqaF0O659SA" name="application" type="_hHFm0YeYEeOyqaF0O659SA"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_hHFm7IeYEeOyqaF0O659SA" name="initLayer" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hHFm7YeYEeOyqaF0O659SA">
+ <body>
+ * Standard initialization of a newly created layer.
+ *
+ * @param layer
+ * @param parentLayer
+ * @param owningStack
+ * @param application
+ * @return
+ * @throws LayersException
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm7oeYEeOyqaF0O659SA" type="_q3GegM-wEeKO_rl5MA6s9A" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm74eYEeOyqaF0O659SA" name="layer" type="_q3GegM-wEeKO_rl5MA6s9A"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm8IeYEeOyqaF0O659SA" name="parentLayer" type="_hHFm0IeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm8YeYEeOyqaF0O659SA" name="owningStack" type="_hG_gNoeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHFm8oeYEeOyqaF0O659SA" name="application" type="_hHFm0YeYEeOyqaF0O659SA"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_hHFm94eYEeOyqaF0O659SA" name="createLayerOperator" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_hHLtcIeYEeOyqaF0O659SA">
+ <body>
+ * Create a LayerOperator by its ID.
+ * IDs are those used when the LayerOperator is registered in application'registry.
+ *
+ * @param layerOperatorID
+ * @param parent
+ * @param owningStack
+ * @param application
+ * @return
+ * @throws LayersException
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHLtcoeYEeOyqaF0O659SA" type="_hHLtcYeYEeOyqaF0O659SA" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHLtc4eYEeOyqaF0O659SA" name="layerOperatorID" type="_hHFm9oeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHLtdIeYEeOyqaF0O659SA" name="parent" type="_hHFm0IeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHLtdYeYEeOyqaF0O659SA" name="owningStack" type="_hG_gNoeYEeOyqaF0O659SA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hHLtdoeYEeOyqaF0O659SA" name="application" type="_hHFm0YeYEeOyqaF0O659SA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hG_gNoeYEeOyqaF0O659SA" name="LayersStack"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hHFm0IeYEeOyqaF0O659SA" name="LayersContainer"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hHFm0YeYEeOyqaF0O659SA" name="LayersStackApplication"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hHFm4IeYEeOyqaF0O659SA" name="TopLayerOperator"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hHFm54eYEeOyqaF0O659SA" name="StackedLayerOperator"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hHLtcYeYEeOyqaF0O659SA" name="AbstractLayerOperator"/>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_hHFm84eYEeOyqaF0O659SA" name="java">
+ <packagedElement xmi:type="uml:Package" xmi:id="_hHFm9IeYEeOyqaF0O659SA" name="java">
+ <packagedElement xmi:type="uml:Package" xmi:id="_hHFm9YeYEeOyqaF0O659SA" name="lang">
+ <packagedElement xmi:type="uml:Class" xmi:id="_hHFm9oeYEeOyqaF0O659SA" name="String"/>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+</uml:Model>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/plugin.properties
new file mode 100644
index 00000000000..d95844cddec
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2013 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:
+# Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Papyrus Layers Documentation
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.documentation/plugin.xml b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/plugin.xml
new file mode 100644
index 00000000000..001043a872d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.documentation/plugin.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.help.toc">
+ <toc
+ file="guides/users/index-toc.xml"
+ primary="false">
+ </toc>
+ <toc
+ file="guides/tutorials/layers-toc.xml"
+ primary="false">
+ </toc>
+ <toc
+ file="guides/tutorials/simpleTutorial-toc.xml"
+ primary="false">
+ </toc>
+ <toc
+ file="guides/tutorials/derivedLayerTutorial-toc.xml"
+ primary="false">
+ </toc>
+ <toc
+ file="guides/developpers/layers-toc.xml"
+ primary="false">
+ </toc>
+ <toc
+ file="guides/developpers/layersDevs-toc.xml"
+ primary="false">
+ </toc>
+ <toc
+ file="guides/index-toc.xml"
+ primary="false">
+ </toc>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.classpath
new file mode 100644
index 00000000000..645d9f22c06
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="test"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.project b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.project
new file mode 100644
index 00000000000..ecf82fb2afc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.integrationtests</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.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.settings/org.eclipse.jdt.core.prefs b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..54e493c07c9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..253b2c944a2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.integrationtests
+Bundle-Version: 1.0.0.qualifier
+Export-Package: org.eclipse.papyrus.layers.integrationtests
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.papyrus.layers.runtime;bundle-version="0.10.0",
+ org.eclipse.papyrus.layers.stackmodel;bundle-version="0.10.0",
+ org.junit,
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.emf.common;bundle-version="2.9.1",
+ org.eclipse.papyrus.integrationtests.editor,
+ org.eclipse.emf.ecore;bundle-version="2.10.0",
+ org.eclipse.papyrus.infra.core,
+ org.eclipse.papyrus.infra.gmfdiag.common
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/about.html b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/about.html
new file mode 100644
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/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/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/build.properties
new file mode 100644
index 00000000000..076d73cb237
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/build.properties
@@ -0,0 +1,13 @@
+bin.includes = META-INF/,\
+ models/,\
+ bin/,\
+ about.html,\
+ plugin.properties
+src.includes = test/,\
+ plugin.properties,\
+ models/,\
+ build.properties,\
+ about.html,\
+ META-INF/,\
+ .classpath,\
+ .project
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.di b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.di
new file mode 100644
index 00000000000..40ea5f38492
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.di
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmlns:org.eclipse.papyrus.layers.stackmodel.layers="org.eclipse.papyrus.layers.0.10">
+ <di:SashWindowsMngr>
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="modeltestReload.notation#_U7710H_HEeOcKbF7eArARg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="modeltestReload.notation#_NIWn0IFTEeOzaYZM9B1O8A"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="modeltestReload.notation#_bmNYgIFTEeOzaYZM9B1O8A"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="modeltestReload.notation#_FbHH8IFWEeOVd594nsh1bA"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="/0/@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="modeltestReload.notation#_U7710H_HEeOcKbF7eArARg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="modeltestReload.notation#_NIWn0IFTEeOzaYZM9B1O8A"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="modeltestReload.notation#_bmNYgIFTEeOzaYZM9B1O8A"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="modeltestReload.notation#_FbHH8IFWEeOVd594nsh1bA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+ </di:SashWindowsMngr>
+ <org.eclipse.papyrus.layers.stackmodel.layers:LayersStackApplication>
+ <layersStacks>
+ <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="Top Layer" owningLayersStack="/1/@layersStacks.0">
+ <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:Layer" application="/1" name="layer0" owningLayersStack="/1/@layersStacks.0"/>
+ </layers>
+ <diagram href="modeltestReload.notation#_U7710H_HEeOcKbF7eArARg"/>
+ </layersStacks>
+ <layersStacks>
+ <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="Top Layer" owningLayersStack="/1/@layersStacks.1">
+ <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:RegExpLayer" application="/1" name="layer0" owningLayersStack="/1/@layersStacks.1"/>
+ </layers>
+ <diagram href="modeltestReload.notation#_NIWn0IFTEeOzaYZM9B1O8A"/>
+ </layersStacks>
+ <layersStacks>
+ <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="Top Layer" owningLayersStack="/1/@layersStacks.2">
+ <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="layer1"/>
+ </layers>
+ <diagram href="modeltestReload.notation#_bmNYgIFTEeOzaYZM9B1O8A"/>
+ </layersStacks>
+ <layersStacks>
+ <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="Top Layer" owningLayersStack="/1/@layersStacks.3">
+ <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:StackedLayerOperator" application="/1" name="layer0" owningLayersStack="/1/@layersStacks.3" layerOperatorDescriptorName="stackedLayersOperator"/>
+ </layers>
+ <diagram href="modeltestReload.notation#_FbHH8IFWEeOVd594nsh1bA"/>
+ </layersStacks>
+ </org.eclipse.papyrus.layers.stackmodel.layers:LayersStackApplication>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.notation b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.notation
new file mode 100644
index 00000000000..ee4d6a1ae9f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.notation
@@ -0,0 +1,147 @@
+<?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/4.0.0/UML">
+ <notation:Diagram xmi:id="_U7710H_HEeOcKbF7eArARg" type="PapyrusUMLClassDiagram" name="diagram1" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_V9uC8H_HEeOcKbF7eArARg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_V9uC8n_HEeOcKbF7eArARg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V9uC83_HEeOcKbF7eArARg" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V9uDAn_HEeOcKbF7eArARg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V9uDA3_HEeOcKbF7eArARg" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V9uC9H_HEeOcKbF7eArARg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V9uC9X_HEeOcKbF7eArARg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V9uC9n_HEeOcKbF7eArARg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9uC93_HEeOcKbF7eArARg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V9uC-H_HEeOcKbF7eArARg" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V9uDBH_HEeOcKbF7eArARg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V9uDBX_HEeOcKbF7eArARg" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V9uC-X_HEeOcKbF7eArARg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V9uC-n_HEeOcKbF7eArARg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V9uC-3_HEeOcKbF7eArARg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9uC_H_HEeOcKbF7eArARg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V9uC_X_HEeOcKbF7eArARg" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V9uDBn_HEeOcKbF7eArARg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V9uDB3_HEeOcKbF7eArARg" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V9uC_n_HEeOcKbF7eArARg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V9uC_3_HEeOcKbF7eArARg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V9uDAH_HEeOcKbF7eArARg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9uDAX_HEeOcKbF7eArARg"/>
+ </children>
+ <element xmi:type="uml:Class" href="modeltestReload.uml#_V8q6EH_HEeOcKbF7eArARg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9uC8X_HEeOcKbF7eArARg" x="134" y="136"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_U7710X_HEeOcKbF7eArARg"/>
+ <element xmi:type="uml:Model" href="modeltestReload.uml#_U7o64H_HEeOcKbF7eArARg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_NIWn0IFTEeOzaYZM9B1O8A" type="PapyrusUMLClassDiagram" name="diagram2" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_N6z_gIFTEeOzaYZM9B1O8A" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_N6z_goFTEeOzaYZM9B1O8A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_N6z_g4FTEeOzaYZM9B1O8A" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N66GIIFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N66GIYFTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_N6z_hIFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_N6z_hYFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_N6z_hoFTEeOzaYZM9B1O8A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N6z_h4FTEeOzaYZM9B1O8A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_N6z_iIFTEeOzaYZM9B1O8A" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N66GIoFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N66GI4FTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_N6z_iYFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_N6z_ioFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_N6z_i4FTEeOzaYZM9B1O8A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N6z_jIFTEeOzaYZM9B1O8A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_N6z_jYFTEeOzaYZM9B1O8A" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N66GJIFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N66GJYFTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_N6z_joFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_N6z_j4FTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_N6z_kIFTEeOzaYZM9B1O8A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N6z_kYFTEeOzaYZM9B1O8A"/>
+ </children>
+ <element xmi:type="uml:Class" href="modeltestReload.uml#_N6blAIFTEeOzaYZM9B1O8A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N6z_gYFTEeOzaYZM9B1O8A" x="230" y="134"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_NIWn0YFTEeOzaYZM9B1O8A"/>
+ <element xmi:type="uml:Model" href="modeltestReload.uml#_U7o64H_HEeOcKbF7eArARg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_bmNYgIFTEeOzaYZM9B1O8A" type="PapyrusUMLClassDiagram" name="diagram3" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_cBNScIFTEeOzaYZM9B1O8A" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cBNScoFTEeOzaYZM9B1O8A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cBNSc4FTEeOzaYZM9B1O8A" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cBNSgoFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cBNSg4FTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cBNSdIFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cBNSdYFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cBNSdoFTEeOzaYZM9B1O8A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cBNSd4FTEeOzaYZM9B1O8A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cBNSeIFTEeOzaYZM9B1O8A" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cBNShIFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cBNShYFTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cBNSeYFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cBNSeoFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cBNSe4FTEeOzaYZM9B1O8A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cBNSfIFTEeOzaYZM9B1O8A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cBNSfYFTEeOzaYZM9B1O8A" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cBNShoFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cBNSh4FTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cBNSfoFTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cBNSf4FTEeOzaYZM9B1O8A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cBNSgIFTEeOzaYZM9B1O8A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cBNSgYFTEeOzaYZM9B1O8A"/>
+ </children>
+ <element xmi:type="uml:Class" href="modeltestReload.uml#_cBHL0IFTEeOzaYZM9B1O8A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cBNScYFTEeOzaYZM9B1O8A" x="233" y="186"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_bmNYgYFTEeOzaYZM9B1O8A"/>
+ <element xmi:type="uml:Model" href="modeltestReload.uml#_U7o64H_HEeOcKbF7eArARg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_FbHH8IFWEeOVd594nsh1bA" type="PapyrusUMLClassDiagram" name="diagram4" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GXaYIIFWEeOVd594nsh1bA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GXaYIoFWEeOVd594nsh1bA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GXaYI4FWEeOVd594nsh1bA" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GXaYMoFWEeOVd594nsh1bA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GXaYM4FWEeOVd594nsh1bA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GXaYJIFWEeOVd594nsh1bA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GXaYJYFWEeOVd594nsh1bA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GXaYJoFWEeOVd594nsh1bA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GXaYJ4FWEeOVd594nsh1bA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GXaYKIFWEeOVd594nsh1bA" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GXaYNIFWEeOVd594nsh1bA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GXaYNYFWEeOVd594nsh1bA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GXaYKYFWEeOVd594nsh1bA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GXaYKoFWEeOVd594nsh1bA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GXaYK4FWEeOVd594nsh1bA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GXaYLIFWEeOVd594nsh1bA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GXaYLYFWEeOVd594nsh1bA" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GXaYNoFWEeOVd594nsh1bA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GXaYN4FWEeOVd594nsh1bA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GXaYLoFWEeOVd594nsh1bA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GXaYL4FWEeOVd594nsh1bA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GXaYMIFWEeOVd594nsh1bA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GXaYMYFWEeOVd594nsh1bA"/>
+ </children>
+ <element xmi:type="uml:Class" href="modeltestReload.uml#_GXB9oIFWEeOVd594nsh1bA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GXaYIYFWEeOVd594nsh1bA" x="314" y="98"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_FbHH8YFWEeOVd594nsh1bA"/>
+ <element xmi:type="uml:Model" href="modeltestReload.uml#_U7o64H_HEeOcKbF7eArARg"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.uml b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.uml
new file mode 100644
index 00000000000..6229e12ea71
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.uml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_U7o64H_HEeOcKbF7eArARg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_V8q6EH_HEeOcKbF7eArARg" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_N6blAIFTEeOzaYZM9B1O8A" name="Class2"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_cBHL0IFTEeOzaYZM9B1O8A" name="Class3"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_GXB9oIFWEeOVd594nsh1bA" name="Class4"/>
+</uml:Model>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/plugin.properties
new file mode 100644
index 00000000000..c2ffb7cbb40
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2014 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers Integration Tests (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/test/org/eclipse/papyrus/layers/integrationtests/LayersStateAfterReloadTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/test/org/eclipse/papyrus/layers/integrationtests/LayersStateAfterReloadTest.java
new file mode 100644
index 00000000000..3f7512616af
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.integrationtests/test/org/eclipse/papyrus/layers/integrationtests/LayersStateAfterReloadTest.java
@@ -0,0 +1,275 @@
+/*****************************************************************************
+ * Copyright (c) 2014 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.integrationtests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.BadArgumentExcetion;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.resource.NotFoundException;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationUtils;
+import org.eclipse.papyrus.integrationtests.editor.DiagramCreator;
+import org.eclipse.papyrus.integrationtests.editor.EclipseProject;
+import org.eclipse.papyrus.integrationtests.editor.ExecutionException;
+import org.eclipse.papyrus.integrationtests.editor.ProgramaticPapyrusEditor;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * Tests checking the states of the layers after a reload of the model.
+ * The state should normally be "ATTACHED".
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStateAfterReloadTest {
+
+ /**
+ * Name of the plugin that is created.
+ */
+ final protected String PLUGIN_PROJECT_NAME = "org.eclipse.papyrus.layers.integrationtests.tests";
+
+ /**
+ * Name of the bundle containing resources to copied.
+ */
+ final protected String BUNDLE_NAME = "org.eclipse.papyrus.layers.integrationtests";
+
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ * @throws ServiceException
+ * @throws BadArgumentExcetion
+ * @throws NotFoundException
+ * @throws ExecutionException
+ */
+ @Test
+ public void testReloadLayer() throws LayersException, ServiceException, NotFoundException, BadArgumentExcetion, ExecutionException {
+ // Create requested objects
+ // Create Editor
+ String modelName = "models/modeltestReload";
+ String diagramName = "diagram1";
+
+
+ EclipseProject eclipseProject = new EclipseProject(PLUGIN_PROJECT_NAME);
+ eclipseProject.copyResources(BUNDLE_NAME, modelName+".di", modelName+".notation", modelName+".uml" );
+
+ ProgramaticPapyrusEditor editorHandler = new ProgramaticPapyrusEditor(eclipseProject, modelName);
+ DiagramCreator diagramCreator = new DiagramCreator(editorHandler);
+
+
+ // Get the diagram:
+ // First the ModelSet, then the NotationModel, then the diagram by its name
+ ModelSet modelSet = editorHandler.getServiceRegistry().getService(ModelSet.class);
+ NotationModel notationModel = NotationUtils.getNotationModel(modelSet);
+ Diagram diagram = notationModel.getDiagram(diagramName );
+
+ // Get the LayerStack for the Layer
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+ LayersStack owningStack = application.lookupLayersStackFor(diagram);
+
+ // Recover tree
+ TopLayerOperator rootLayer = (TopLayerOperator)owningStack.getLayers();
+ Layer layer1 = (Layer)rootLayer.getLayers().get(0);
+
+ // Assert
+ assertNotNull("stack found in diagram", owningStack);
+ assertSame("state attached", LayerState.ATTACHED, owningStack.getState() );
+
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createRegExpLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ * @throws ExecutionException
+ * @throws ServiceException
+ * @throws BadArgumentExcetion
+ * @throws NotFoundException
+ */
+ @Test
+ public void testReloadRegExpLayer() throws LayersException, ExecutionException, ServiceException, NotFoundException, BadArgumentExcetion {
+ // Create requested objects
+ // Create Editor
+ String modelName = "models/modeltestReload";
+ String diagramName = "diagram2";
+
+
+ EclipseProject eclipseProject = new EclipseProject(PLUGIN_PROJECT_NAME);
+ eclipseProject.copyResources(BUNDLE_NAME, modelName+".di", modelName+".notation", modelName+".uml" );
+
+ ProgramaticPapyrusEditor editorHandler = new ProgramaticPapyrusEditor(eclipseProject, modelName);
+
+ // Get the diagram:
+ // First the ModelSet, then the NotationModel, then the diagram by its name
+ ModelSet modelSet = editorHandler.getServiceRegistry().getService(ModelSet.class);
+ NotationModel notationModel = NotationUtils.getNotationModel(modelSet);
+ Diagram diagram = notationModel.getDiagram(diagramName );
+
+ // Get the LayerStack for the Layer
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+ LayersStack owningStack = application.lookupLayersStackFor(diagram);
+
+ // Recover tree
+ TopLayerOperator rootLayer = (TopLayerOperator)owningStack.getLayers();
+ RegExpLayer layer1 = (RegExpLayer)rootLayer.getLayers().get(0);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ * @throws ServiceException
+ * @throws ExecutionException
+ * @throws BadArgumentExcetion
+ * @throws NotFoundException
+ */
+ @Test
+ public void testReloadTopLayerOperator() throws LayersException, ServiceException, ExecutionException, NotFoundException, BadArgumentExcetion {
+ // Create requested objects
+ // Create Editor
+ String modelName = "models/modeltestReload";
+ String diagramName = "diagram3";
+
+
+ EclipseProject eclipseProject = new EclipseProject(PLUGIN_PROJECT_NAME);
+ eclipseProject.copyResources(BUNDLE_NAME, modelName+".di", modelName+".notation", modelName+".uml" );
+
+ ProgramaticPapyrusEditor editorHandler = new ProgramaticPapyrusEditor(eclipseProject, modelName);
+
+ // Get the diagram:
+ // First the ModelSet, then the NotationModel, then the diagram by its name
+ ModelSet modelSet = editorHandler.getServiceRegistry().getService(ModelSet.class);
+ NotationModel notationModel = NotationUtils.getNotationModel(modelSet);
+ Diagram diagram = notationModel.getDiagram(diagramName );
+
+ // Get the LayerStack for the Layer
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+ LayersStack owningStack = application.lookupLayersStackFor(diagram);
+
+ // Recover tree
+ TopLayerOperator rootLayer = (TopLayerOperator)owningStack.getLayers();
+ TopLayerOperator layer1 = (TopLayerOperator)rootLayer.getLayers().get(0);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createStackedLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ * @throws ExecutionException
+ * @throws ServiceException
+ * @throws BadArgumentExcetion
+ * @throws NotFoundException
+ */
+ @Test
+ public void testCreateStackedLayerOperator() throws LayersException, ExecutionException, ServiceException, NotFoundException, BadArgumentExcetion {
+ // Create requested objects
+ // Create Editor
+ String modelName = "models/modeltestReload";
+ String diagramName = "diagram4";
+
+
+ EclipseProject eclipseProject = new EclipseProject(PLUGIN_PROJECT_NAME);
+ eclipseProject.copyResources(BUNDLE_NAME, modelName+".di", modelName+".notation", modelName+".uml" );
+
+ ProgramaticPapyrusEditor editorHandler = new ProgramaticPapyrusEditor(eclipseProject, modelName);
+
+ // Get the diagram:
+ // First the ModelSet, then the NotationModel, then the diagram by its name
+ ModelSet modelSet = editorHandler.getServiceRegistry().getService(ModelSet.class);
+ NotationModel notationModel = NotationUtils.getNotationModel(modelSet);
+ Diagram diagram = notationModel.getDiagram(diagramName );
+
+ // Get the LayerStack for the Layer
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+ LayersStack owningStack = application.lookupLayersStackFor(diagram);
+
+ // Recover tree
+ TopLayerOperator rootLayer = (TopLayerOperator)owningStack.getLayers();
+ StackedLayerOperator layer1 = (StackedLayerOperator)rootLayer.getLayers().get(0);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/.classpath
new file mode 100644
index 00000000000..2d1a4302f04
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/.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/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/.project b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/.project
new file mode 100644
index 00000000000..1d326665896
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.notationmodel.edit</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/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..06762c1196d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.notationmodel.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.layers.notationmodel.edit.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
+ org.eclipse.gmf.runtime.notation.edit;bundle-version="1.4.0",
+ org.eclipse.gmf.runtime.notation.providers;bundle-version="1.7.0",
+ org.eclipse.emf.edit;bundle-version="2.9.0",
+ org.eclipse.emf.ecore.edit;bundle-version="2.8.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.layers.notationmodel.edit
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/about.html b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/about.html
new file mode 100644
index 00000000000..82d49bf5f81
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/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/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/build.properties
new file mode 100644
index 00000000000..ba491cbd5a4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/build.properties
@@ -0,0 +1,16 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ bin/,\
+ plugin.properties
+src.includes = .classpath,\
+ .project,\
+ META-INF/,\
+ about.html,\
+ build.properties,\
+ plugin.properties,\
+ src/,\
+ plugin.xml
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.properties
new file mode 100644
index 00000000000..8190e79f036
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2013 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:
+# Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Notation Model Providers for Layers (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.xml b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.xml
new file mode 100644
index 00000000000..b60f62ae57e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+</plugin>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/Activator.java b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/Activator.java
new file mode 100644
index 00000000000..71f339fab33
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/Activator.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+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.layers.notationmodel.edit"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ConnectorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ConnectorItemProvider.java
new file mode 100644
index 00000000000..fc3ee18ecc1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ConnectorItemProvider.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.gmf.runtime.notation.Shape;
+
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ConnectorItemProvider extends org.eclipse.gmf.runtime.notation.provider.ShapeItemProvider {
+
+ protected AdapterFactory domainAdapterFactory;
+
+ /**
+ * Constructor.
+ *
+ * @param adapterFactory
+ */
+ public ConnectorItemProvider(AdapterFactory adapterFactory, AdapterFactory domainAdapterFactory) {
+ super(adapterFactory);
+ this.domainAdapterFactory = domainAdapterFactory;
+ }
+
+
+ /**
+ * Return the text of the underlying UML element if any.
+ * @see org.eclipse.gmf.runtime.notation.provider.ShapeItemProvider#getText(java.lang.Object)
+ *
+ * @param object
+ * @return
+ */
+ @Override
+ public String getText(Object object) {
+
+ System.err.println("getText()");
+ Shape shape = (Shape)object;
+
+ Object domainObject = shape.getElement();
+ if( domainObject != null) {
+ IItemLabelProvider nestedProvider = (IItemLabelProvider)domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+ if(nestedProvider != null) {
+ return nestedProvider.getText(domainObject);
+ }
+ }
+ return super.getText(object);
+ }
+
+
+ /**
+ * Return the image of the underlying UML element if any.
+ *
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getImage(java.lang.String)
+ *
+ * @param key
+ * @return
+ */
+ @Override
+ public Object getImage(Object object) {
+ System.err.println("getImage()");
+ Shape shape = (Shape)object;
+
+ Object domainObject = shape.getElement();
+ if( domainObject != null) {
+ IItemLabelProvider nestedProvider = (IItemLabelProvider)domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+ if(nestedProvider != null) {
+ return nestedProvider.getImage(domainObject);
+ }
+ }
+ return super.getImage(object);
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/DiagramItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/DiagramItemProvider.java
new file mode 100644
index 00000000000..32843fa7f8b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/DiagramItemProvider.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.gmf.runtime.notation.Connector;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+
+
+/**
+ * Custom Diagram Item provider
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramItemProvider extends org.eclipse.gmf.runtime.notation.provider.DiagramItemProvider {
+
+
+ protected AdapterFactory domainAdapterFactory;
+
+ /**
+ * Constructor.
+ *
+ * @param adapterFactory
+ * @param domainAdapterFactory
+ */
+ public DiagramItemProvider(AdapterFactory adapterFactory, AdapterFactory domainAdapterFactory) {
+ super(adapterFactory);
+ this.adapterFactory = adapterFactory;
+ }
+
+ @Override
+ public Collection<?> getChildren(Object object) {
+ return getChildren(object);
+ }
+
+ @Override
+ public Collection<?> getElements(Object object) {
+
+ Diagram diagram = (Diagram)object;
+ if(diagram.getChildren().size() == 0) {
+ return Collections.emptyList();
+ }
+
+ // TODO: improve the implementation by using a view list or
+ // by having an internal shadow list
+ List<View> children = diagram.getChildren();
+ List<View> res = new ArrayList<View>()
+ ;
+ for( View v : children) {
+ if( v instanceof Shape || v instanceof Connector) {
+ res.add(v);
+ }
+
+ }
+
+ List<View> edges = diagram.getEdges();
+ for( View v : edges) {
+ if( v instanceof Shape || v instanceof Connector) {
+ res.add(v);
+ }
+
+ }
+ return res;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NotationItemProviderAdapterFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NotationItemProviderAdapterFactory.java
new file mode 100644
index 00000000000..389576a0765
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NotationItemProviderAdapterFactory.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+
+
+/**
+ * A ProviderAdapterFactory for notations elements in Layers.
+ * The associated providers allows to render notation elements as UML elements.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationItemProviderAdapterFactory extends org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory {
+
+
+ /**
+ * The {@link AdapterFactory} to which some methods will delegate to show business
+ * models.
+ */
+ protected AdapterFactory domainAdapterFactory;
+
+ /**
+ * Constructor.
+ *
+ * @param domainAdapterFactory
+ */
+ public NotationItemProviderAdapterFactory(AdapterFactory domainAdapterFactory) {
+ this.domainAdapterFactory = domainAdapterFactory;
+ }
+ /**
+ * Use our DiagramAdapter.
+ * @see org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory#createDiagramAdapter()
+ *
+ * @return
+ */
+ @Override
+ public Adapter createDiagramAdapter() {
+ if (diagramItemProvider == null) {
+ diagramItemProvider = new DiagramItemProvider(this, domainAdapterFactory);
+ }
+
+ return diagramItemProvider;
+ }
+
+ @Override
+ public Adapter createShapeAdapter() {
+ if (shapeItemProvider == null) {
+ shapeItemProvider = new ShapeItemProvider(this, domainAdapterFactory);
+ }
+
+ return shapeItemProvider;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ShapeItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ShapeItemProvider.java
new file mode 100644
index 00000000000..83579e04b3b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ShapeItemProvider.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.gmf.runtime.notation.Shape;
+
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class ShapeItemProvider extends org.eclipse.gmf.runtime.notation.provider.ShapeItemProvider {
+
+ protected AdapterFactory domainAdapterFactory;
+
+ /**
+ * Constructor.
+ *
+ * @param adapterFactory
+ */
+ public ShapeItemProvider(AdapterFactory adapterFactory, AdapterFactory domainAdapterFactory) {
+ super(adapterFactory);
+ this.domainAdapterFactory = domainAdapterFactory;
+ }
+
+
+ /**
+ * Return the text of the underlying UML element if any.
+ * @see org.eclipse.gmf.runtime.notation.provider.ShapeItemProvider#getText(java.lang.Object)
+ *
+ * @param object
+ * @return
+ */
+ @Override
+ public String getText(Object object) {
+
+ System.err.println("getText()");
+ Shape shape = (Shape)object;
+
+ Object domainObject = shape.getElement();
+ if( domainObject != null) {
+ IItemLabelProvider nestedProvider = (IItemLabelProvider)domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+ if(nestedProvider != null) {
+ return nestedProvider.getText(domainObject);
+ }
+ }
+ return super.getText(object);
+ }
+
+
+ /**
+ * Return the image of the underlying UML element if any.
+ *
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getImage(java.lang.String)
+ *
+ * @param key
+ * @return
+ */
+ @Override
+ public Object getImage(Object object) {
+ System.err.println("getImage()");
+ Shape shape = (Shape)object;
+
+ Object domainObject = shape.getElement();
+ if( domainObject != null) {
+ IItemLabelProvider nestedProvider = (IItemLabelProvider)domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+ if(nestedProvider != null) {
+ return nestedProvider.getImage(domainObject);
+ }
+ }
+ return super.getImage(object);
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/.classpath
new file mode 100644
index 00000000000..3e28c6bdc1d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="tests"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/.project b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/.project
new file mode 100644
index 00000000000..d6085b88ca5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.runtime</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/extraplugins/layers/org.eclipse.papyrus.layers.runtime/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..40933ab25a5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.runtime;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.layers.runtime.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.papyrus.layers.stackmodel;bundle-version="1.0.0",
+ org.eclipse.emf.ecore;bundle-version="2.9.0",
+ org.junit,
+ org.eclipse.papyrus.infra.core,
+ org.eclipse.core.resources;bundle-version="3.8.100",
+ org.eclipse.papyrus.infra.gmfdiag.common;bundle-version="0.10.0",
+ org.eclipse.uml2.uml;bundle-version="4.1.1"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.layers.runtime,
+ org.eclipse.papyrus.layers.runtime.model,
+ org.eclipse.papyrus.layers.runtime.service,
+ org.eclipse.papyrus.layers.runtime.utils
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/about.html b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/about.html
new file mode 100644
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/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/extraplugins/layers/org.eclipse.papyrus.layers.runtime/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/build.properties
new file mode 100644
index 00000000000..3de11339ff9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/build.properties
@@ -0,0 +1,17 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ bin/,\
+ plugin.properties
+src.includes = META-INF/,\
+ about.html,\
+ build.properties,\
+ plugin.properties,\
+ .project,\
+ .classpath,\
+ plugin.xml,\
+ src/,\
+ tests/
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/plugin.properties
new file mode 100644
index 00000000000..40e8e6d045a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2013 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:
+# Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers Runtime (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/plugin.xml b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/plugin.xml
new file mode 100644
index 00000000000..ca048cf167d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/plugin.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.infra.core.model">
+ <model
+ classname="org.eclipse.papyrus.layers.runtime.model.LayersModel"
+ description="Model used by layers.">
+ </model>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.infra.core.service">
+ <service
+ classname="org.eclipse.papyrus.layers.runtime.service.LayersApplicationService"
+ description="Service for Layers"
+ priority="1"
+ startKind="startup">
+ <dependsOn
+ serviceKeyRef="org.eclipse.emf.transaction.TransactionalEditingDomain">
+ </dependsOn>
+ <dependsOn
+ serviceKeyRef="org.eclipse.papyrus.infra.core.resource.ModelSet">
+ </dependsOn>
+ <dependsOn
+ serviceKeyRef="org.eclipse.papyrus.infra.core.editor.IMultiDiagramEditor">
+ </dependsOn>
+ </service>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/Activator.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/Activator.java
new file mode 100644
index 00000000000..fe8eb0d72c0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/Activator.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ private static BundleContext context;
+
+ static BundleContext getContext() {
+ return context;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.context = bundleContext;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext bundleContext) throws Exception {
+ Activator.context = null;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersModelEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersModelEventListener.java
new file mode 100644
index 00000000000..3abf07c96d5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersModelEventListener.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStack}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayersModelEventListener {
+
+ /**
+ * Method called when a value is added to one layer.
+ * The vent contains: the layer, the property name, the new value.
+ *
+ * @param notification
+ */
+ public void propertyValueAdded( Notification notification );
+ public void propertyValueRemoved( Notification notification );
+ public void propertyValueChanged( Notification notification );
+
+ /**
+ * Method called when a layer is added to one layer.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void layerAdded( Notification notification );
+ public void layerRemoved( Notification notification );
+ public void layerMoved( Notification notification );
+ public void layerSet( Notification notification );
+
+ /**
+ * Method called when a view is added to one layer.
+ * The event contains: the layer, the view.
+ *
+ * @param notification
+ */
+ public void viewAddedToLayer( Notification notification );
+ public void viewRemovedFromLayer( Notification notification );
+ public void multiViewsRemovedFromLayer(Notification notification);
+ public void multiViewsAddedToLayer(Notification notification);
+
+ /**
+ * Method called when a view is moved from one layer to another.
+ * The event contains: the layer, the view.
+ * Warning : this handler is never called in the current implementation.
+ * @param notification
+ */
+ public void viewMovedBetweenLayer( Notification notification );
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersStackApplicationEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersStackApplicationEventListener.java
new file mode 100644
index 00000000000..a4fa5d014c7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersStackApplicationEventListener.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStackApplication}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayersStackApplicationEventListener {
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ public void layerStackAdded(Notification msg) ;
+
+ /**
+ * Called by events when a {@link LayersStack} is removed from the {@link LayersStackApplication}
+ * @param msg
+ */
+ public void layerStackRemoved(Notification msg) ;
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/INotationDiagramRemovedEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/INotationDiagramRemovedEventListener.java
new file mode 100644
index 00000000000..e402f975038
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/INotationDiagramRemovedEventListener.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+
+
+/**
+ * Class implementing this interface can listen to diagram removed event from a {@link Resource}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface INotationDiagramRemovedEventListener {
+
+ /**
+ * Called by events when a {@link Diagram} is removed from the {@link NotationModel}
+ * @param msg
+ */
+ public void diagramRemoved(Notification msg) ;
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizer.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizer.java
new file mode 100644
index 00000000000..5e3cba92c77
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizer.java
@@ -0,0 +1,397 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.ILayersModelRootEventListener;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModelEventRootNotifier;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ *
+ * Listen to:
+ * - LayerStack added
+ * - application added/removed in LayerModel
+ *
+ * <br>
+ * The class has an internal state machine with two states: ApplicationExist and NoApplication.
+ * <br>
+ * In the ApplicationExist state, the class listen to {@link LayersStack} added/removed and to the Diagrams deletion.
+ * <br>
+ * In the NoApplication state, the class listen on the LayerModel to be informed when the application is created.
+ * When application is created, we change the state to ApplicationExist.
+ *
+ * There is an UML sm diagram of this in architecture.di.
+ *
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackApplicationSynchronizer implements ILayersModelRootEventListener, ILayersStackApplicationEventListener, INotationDiagramRemovedEventListener{
+
+ /**
+ * States used in the state machine.
+ */
+ protected enum State {NoApplication, ApplicationCreated, disposed};
+ protected State state;
+
+ protected LayersModel layersModel;
+ protected NotationModel notationModel;
+
+ /**
+ * All registered synchronizers.
+ */
+ protected Map<Diagram, LayerStackSynchronizer> synchronizers = new HashMap<Diagram, LayerStackSynchronizer>();
+
+ /**
+ * Notifier on Diagram removed event.
+ */
+ protected NotationDiagramRemovedFromResourceEventNotifier notationDiagramRemovedNotifier;
+
+ /**
+ * Notifier on LayerSTackApplication events
+ */
+ protected LayersStackApplicationEventNotifier layersStackApplicationEventNotifier;
+
+ /**
+ * Notifier on {@link LayersModel} events.
+ */
+ protected LayersModelEventRootNotifier layersModelEventRootNotifier;
+
+ /**
+ * Constructor.
+ *
+ */
+ public LayerStackApplicationSynchronizer(LayersModel layersModel, NotationModel notationModel) {
+
+ this.layersModel = layersModel;
+ this.notationModel = notationModel;
+
+ initState();
+ }
+
+ /**
+ * Init the state of the object
+ */
+ private void initState() {
+
+ if( layersModel.lookupLayerStackApplication() != null) {
+ transitionInitToApplicationCreatedState();
+ }
+ else {
+ transitionInitToNoApplicationState();
+ }
+ }
+
+ /**
+ * Initialize the class for the NoApplication state:
+ * - listen on LayersModel notifiers for application creation
+ */
+ private void transitionInitToApplicationCreatedState() {
+ activateLayersModelAndDiagramDeletionNotifiers();
+ activateLayersModelRootNotifier();
+ createSynchronizerForExistingStacks();
+ state = State.ApplicationCreated;
+ }
+
+ /**
+ * Initialize the class for the NoApplication state:
+ * - listen on LayersModel notifiers for application creation
+ */
+ private void transitionNoApplicationToApplicationCreatedState() {
+ activateLayersModelAndDiagramDeletionNotifiers();
+ activateLayersModelRootNotifier();
+ state = State.ApplicationCreated;
+ }
+
+ /**
+ * Initialize the class for the ApplicationCreated state:
+ * - listen on appropriate notifiers
+ * - check if some LayerStack are already there.
+ */
+ private void transitionInitToNoApplicationState() {
+ activateLayersModelRootNotifier();
+ state = State.NoApplication;
+ }
+
+ /**
+ * Initialize the class for the ApplicationCreated state:
+ * - listen on appropriate notifiers
+ * - check if some LayerStack are already there.
+ */
+ private void transitionApplicationCreatedToNoApplicationState() {
+ deactivateLayersModelAndDiagramDeletionNotifiers();
+ state = State.NoApplication;
+ }
+
+ /**
+ * Create synchronizer for already created stack.
+ * The application object must exist.
+ */
+ private void createSynchronizerForExistingStacks() {
+
+ LayersStackApplication application = layersModel.lookupLayerStackApplication();
+ if(application == null) {
+ // Application is not set, skip.
+ return;
+ }
+
+ for( LayersStack stack : application.getLayersStacks()) {
+ if( stack.getDiagram() != null) {
+ addLayerStackSynchronizer(stack);
+ }
+ }
+
+ }
+
+
+
+ /**
+ * @return the synchronizers
+ */
+ public Map<Diagram, LayerStackSynchronizer> getSynchronizers() {
+ return synchronizers;
+ }
+
+
+ /**
+ * @return the layersModel
+ */
+ public LayersModel getLayersModel() {
+ return layersModel;
+ }
+
+
+ /**
+ * @return the notationModel
+ */
+ public NotationModel getNotationModel() {
+ return notationModel;
+ }
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ protected void activate() {
+ initState();
+ }
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ private void activateLayersModelRootNotifier() {
+ /**
+ * Listen on layersModel to be inform when the application object is created.
+ * When it is created, we can listen on it.
+ */
+
+ layersModelEventRootNotifier = new LayersModelEventRootNotifier(layersModel);
+ layersModelEventRootNotifier.addEventListener(this);
+ }
+
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ private void deactivateLayersModelRootNotifier() {
+ /**
+ * Listen on layersModel to be inform when the application object is created.
+ * When it is created, we can listen on it.
+ */
+ if( layersModelEventRootNotifier != null ) {
+ layersModelEventRootNotifier.removeEventListener(this);
+ layersModelEventRootNotifier = null;
+ }
+ }
+
+ /**
+ * Deactivate the listeners.
+ *
+ */
+ private void activateLayersModelAndDiagramDeletionNotifiers() {
+ /**
+ * Listen on layersModel to be inform when the application object is created.
+ * When it is created, we can listen on it.
+ */
+ notationDiagramRemovedNotifier = new NotationDiagramRemovedFromResourceEventNotifier(notationModel);
+ notationDiagramRemovedNotifier.addLayersModelEventListener(this);
+
+ layersStackApplicationEventNotifier = new LayersStackApplicationEventNotifier(layersModel);
+ layersStackApplicationEventNotifier.addLayersModelEventListener(this);
+ }
+
+ /**
+ * Deactivate listeners
+ */
+ protected void deactivateLayersModelAndDiagramDeletionNotifiers() {
+ if( notationDiagramRemovedNotifier != null) {
+ notationDiagramRemovedNotifier.removeLayersModelEventListener(this);
+ notationDiagramRemovedNotifier = null;
+ }
+
+ if(layersStackApplicationEventNotifier!=null) {
+ layersStackApplicationEventNotifier.removeLayersModelEventListener(this);
+ layersStackApplicationEventNotifier = null;
+ }
+ }
+
+ /**
+ * Deactivate listeners
+ */
+ protected void deactivate() {
+ deactivateLayersModelAndDiagramDeletionNotifiers();
+ deactivateLayersModelRootNotifier();
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ public void dispose() {
+ // Deactivate listeners
+ deactivate();
+ layersModel = null;
+ notationModel = null;
+ state = State.disposed;
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ protected boolean isDisposed() {
+ return state == State.disposed;
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ public void layerStackAdded(Notification msg) {
+ System.out.println("LayerStackApplicationSynchronizer.layerStackAdded : " + msg.getNewValue());
+
+ // Find the LayerStack
+ LayersStack stack = LayersStackApplicationEventNotifier.getAddedLayerStack(msg);
+
+ addLayerStackSynchronizer(stack);
+ }
+
+
+ /**
+ * Create and add a {@link LayerStackSynchronizer} for the stack.
+ * Do nothing if the stack has already a synchronizer.
+ *
+ * @param stack
+ */
+ private void addLayerStackSynchronizer(LayersStack stack) {
+ // Check if already exist
+ if( lookupLayersStackSynchronizer(stack.getDiagram()) != null) {
+ return;
+ }
+
+ // Create a new synchronizer
+ LayerStackSynchronizer layerStackSynchronizer = new LayerStackSynchronizer(stack);
+ putLayersStackSynchronizer(layerStackSynchronizer);
+ }
+
+ /**
+ * Lookup a {@link LayerStackSynchronizer} by its diagram.
+ * @param diagram
+ * @return
+ */
+ protected LayerStackSynchronizer lookupLayersStackSynchronizer(Diagram diagram) {
+ return synchronizers.get(diagram);
+ }
+
+ /**
+ * Lookup a {@link LayerStackSynchronizer} by its diagram.
+ * @param diagram
+ * @return
+ */
+ protected void putLayersStackSynchronizer(LayerStackSynchronizer layerStackSynchronizer) {
+
+ synchronizers.put(layerStackSynchronizer.getDiagram(), layerStackSynchronizer);
+ }
+
+
+ /**
+ * Called by events when a {@link LayersStack} is removed from the {@link LayersStackApplication}
+ * @param msg
+ */
+ public void layerStackRemoved(Notification msg) {
+ System.out.println("LayerStack is removed" + msg.getOldValue());
+
+ // Find the LayerStack
+ LayersStack stack = LayersStackApplicationEventNotifier.getRemovedLayerStack(msg);
+
+ LayerStackSynchronizer synchronizer = synchronizers.remove(stack.getDiagram());
+ synchronizer.dispose();
+
+ // Also remove from application
+
+ }
+
+ /**
+ * Called by events when a {@link Diagram} is removed from the {@link NotationModel}
+ * @param msg
+ */
+ public void diagramRemoved(Notification msg) {
+ System.out.println(this.getClass().getSimpleName() + ".diagramRemoved() - " + msg.getOldValue());
+
+ if( state != State.ApplicationCreated) {
+ return;
+ }
+
+ // Find the diagram
+ Diagram diagram = NotationDiagramRemovedFromResourceEventNotifier.getRemovedDiagram(msg);
+
+ // Remove from application
+ // This should in turn remove the LayerStackSynchronizer from
+ // this class (LayerStackApplicationSynchronizer).
+ getLayersModel().lookupLayerStackApplication().removeLayersStackFor(diagram);
+
+ // check if really removed from this object
+ LayerStackSynchronizer synchronizer = synchronizers.remove(diagram);
+ if( synchronizer != null ) {
+ // Should not happen
+ System.err.println(this.getClass().getSimpleName() + ".diagramRemoved() - synchronizernot completly cleaned. Finish the job.");
+ synchronizer.dispose();
+ }
+ }
+
+
+ @Override
+ public void layersModelRootAdded(Notification msg) {
+ if( state == State.NoApplication) {
+ transitionNoApplicationToApplicationCreatedState();
+ }
+
+ }
+
+
+ @Override
+ public void layersModelRootRemoved(Notification msg) {
+ if( state == State.ApplicationCreated) {
+ transitionApplicationCreatedToNoApplicationState();
+ }
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizer.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizer.java
new file mode 100644
index 00000000000..e69ce3dc0a4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizer.java
@@ -0,0 +1,699 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener;
+
+
+/**
+ * This class is used to synchronize the diagram's properties when something
+ * change in the LayerStack.
+ * It listen on events from {@link LayersStack} and {@link Diagram}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackSynchronizer implements IDiagramViewEventListener, ILayersModelEventListener {
+
+ /**
+ * The observed diagram.
+ */
+ protected Diagram diagram;
+
+ /**
+ * The observed LayerStack.
+ */
+ protected LayersStack layersStack;
+
+ /**
+ * The application object. Required by some methods.
+ * <br>
+ * Method requiring this object must check it before any use,
+ * as this object can be null.
+ *
+ */
+ protected LayersStackApplication application;
+
+ /**
+ * The notifier of layer model events.
+ */
+ protected LayersModelEventNotifier layersModelEventNotifier;
+
+ /**
+ * The notifier of layer model events.
+ */
+ protected DiagramViewEventNotifier diagramViewEventNotifier;
+
+ /**
+ * Constructor.
+ *
+ * @param layersStack The layerStack to listen to. It should have an associated diagram.
+ *
+ */
+ public LayerStackSynchronizer(LayersStack layersStack) {
+ this.diagram = layersStack.getDiagram();
+ this.layersStack = layersStack;
+
+ // try to get the application object
+ // it is the container of the layerStack
+ application = (LayersStackApplication)layersStack.eContainer();
+
+
+ activate();
+// System.err.println("LayerStackSynchronizer( " +diagram.getName()+ " ) started");
+ }
+
+
+
+ /**
+ * @return the diagram
+ */
+ public Diagram getDiagram() {
+ return diagram;
+ }
+
+
+
+ /**
+ * @return the layersStack
+ */
+ public LayersStack getLayersStack() {
+ return layersStack;
+ }
+
+
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ protected void activate() {
+
+ diagramViewEventNotifier = new DiagramViewEventNotifier(diagram);
+ diagramViewEventNotifier.addEventListener(this);
+
+ layersModelEventNotifier = new LayersModelEventNotifier(layersStack);
+ layersModelEventNotifier.addLayersModelEventListener(this);
+
+ }
+
+ /**
+ * Deactivate listeners
+ */
+ protected void deactivate() {
+ diagramViewEventNotifier.removeEventListener(this);
+ diagramViewEventNotifier = null;
+
+ layersModelEventNotifier.removeLayersModelEventListener(this);
+ layersModelEventNotifier = null;
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ protected void dispose() {
+ // Deactivate listeners
+ deactivate();
+ diagramViewEventNotifier = null;
+ layersModelEventNotifier = null;
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ protected boolean isDisposed() {
+ return diagramViewEventNotifier == null;
+ }
+
+ /**
+ * Check if the application object is not null.
+ * Throw an exception if the application object is null.
+ * <br>
+ * In normal use, the Application is the container of the LayerStack.
+ * It is set in the constructor of this class.
+ *
+ * @throws BadStateException
+ */
+ protected void checkApplication() throws BadStateException {
+ if( application == null) {
+ throw new BadStateException("Attempt to call a method requireing the 'application object, but the Application object is not set. You must provide a LayerStack contained in its Application.");
+ }
+ }
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#propertyValueAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void propertyValueAdded(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + ".propertyValueAdded " + notification.getNewValue());
+
+ PropertySetter setter = null;
+ try {
+ // Name of the property
+ String propertyName = LayersModelEventUtils.PropertyEvents.getPropertyNameFromValueAdd(notification);
+
+ // Need to recompute the associated views
+ AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+ List<View> views = layer.getViews();
+ if( views.size() == 0) {
+ return;
+ }
+
+ checkApplication();
+ Property property = application.getPropertyRegistry().getProperty(propertyName);
+
+ List<ComputePropertyValueCommand> commands = layersStack.getViewsComputePropertyValueCommand(views, property);
+
+ setter = application.getPropertySetterRegistry().getPropertySetter(property);
+
+ // Walk each view and set the property
+ for( int i=0; i<views.size(); i++) {
+
+ // set the value from the provided cmds.
+ // Do it if the cmd is not null
+ if( commands != null && commands.get(i) != null ) {
+ setter.setValue(views.get(i), commands.get(i).getCmdValue() );
+ }
+ else {
+ System.err.println( this.getClass().getSimpleName() + "ERROR - a cmd is null " + commands);
+ }
+ }
+ } catch (NotFoundException e) {
+ System.err.println(e.getMessage());
+ } catch (LayersException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (UnsupportedOperationException e) {
+ // A setter or getter is not implemented
+ throw new UnsupportedOperationException("setter='" + setter.getClass().getName()+"'", e);
+ }
+ }
+
+
+
+ @Override
+ public void propertyValueRemoved(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + ".propertyValueRemoved " + notification.getOldValue());
+
+ try {
+ // Name of the property
+ String propertyName = LayersModelEventUtils.PropertyEvents.getPropertyNameFromValueRemove(notification);
+
+ // Need to recompute the associated views
+ AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+ List<View> views = layer.getViews();
+ if( views.size() == 0) {
+ return;
+ }
+
+ checkApplication();
+ Property property = application.getPropertyRegistry().getProperty(propertyName);
+
+ List<ComputePropertyValueCommand> commands = layersStack.getViewsComputePropertyValueCommand(views, property);
+ if( commands == null) {
+ // no command
+ return;
+ }
+
+ PropertySetter setter = application.getPropertySetterRegistry().getPropertySetter(property);
+
+ // Walk each view and set the property
+ for( int i=0; i<views.size(); i++) {
+ // A command can be null
+ ComputePropertyValueCommand cmd = commands.get(i).getCmdValue();
+ if( cmd != null ) {
+ setter.setValue(views.get(i), cmd.getCmdValue() );
+ }
+
+ }
+ } catch (NotFoundException e) {
+ System.err.println(e.getMessage());
+ } catch (LayersException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+
+ @Override
+ public void propertyValueChanged(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + ".propertyValueChanged " + notification.getNewValue());
+
+ // If LayerExpression::IsLayerEnabled() is changed, treat it separately.
+ if(notification.getFeature() == LayersPackage.eINSTANCE.getLayerExpression_IsLayerEnabled()) {
+ propertyValueChangedIsLayerEnabled(notification);
+ return;
+ }
+
+ // Here, this should be a regular property that is modified
+ try {
+ // Name of the property
+ String propertyName = LayersModelEventUtils.PropertyEvents.getPropertyNameFromValueSet(notification);
+
+ // Need to recompute the associated views
+ AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+ List<View> views = layer.getViews();
+ if( views.size() == 0) {
+ return;
+ }
+
+ checkApplication();
+ Property property = application.getPropertyRegistry().getProperty(propertyName);
+
+ List<ComputePropertyValueCommand> commands = layersStack.getViewsComputePropertyValueCommand(views, property);
+ if(commands == null) {
+ return;
+ }
+
+ PropertySetter setter = application.getPropertySetterRegistry().getPropertySetter(property);
+
+ // Walk each view and set the property
+ for( int i=0; i<views.size(); i++) {
+ ComputePropertyValueCommand getValueCmd = commands.get(i);
+ if(getValueCmd != null) {
+ setter.setValue(views.get(i), getValueCmd.getCmdValue() );
+ }
+ }
+ } catch (NotFoundException e) {
+ System.err.println(e.getMessage());
+ } catch (LayersException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+
+ /**
+ * The LayerExpression::IsLayerEnabled() is changed. Refresh views and properties of the layer.
+ *
+ *
+ * @param notification
+ */
+ private void propertyValueChangedIsLayerEnabled(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + ".propertyValueChangedIsLayerEnabled " + notification.getNewValue());
+
+ try {
+
+ checkApplication();
+
+ // Extract the affected layer
+// AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+ AbstractLayer layer = (AbstractLayer)notification.getNotifier();
+
+ recomputePropertiesForAllViewsOf(layer);
+ } catch (NotFoundException e) {
+ System.err.println(e.getMessage());
+ } catch (LayersException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+
+ /**
+ * Recompute the specified properties for the specified views.
+ *
+ * @param views
+ * @param properties
+ * @throws LayersException
+ */
+ private void recompute(List<View> views, List<Property> properties) throws LayersException {
+
+ // Iterate on views
+ for( View view : views) {
+ recompute( view, properties);
+ }
+
+ }
+
+
+
+ /**
+ * Recompute the specified properties for the specified view.
+ *
+ * @param view
+ * @param properties
+ * @throws LayersException
+ */
+ private void recompute(View view, List<Property> properties) throws LayersException {
+
+ List<ComputePropertyValueCommand> commands = layersStack.getPropertiesComputePropertyValueCommand(view, properties);
+ if(commands == null) {
+ // No property to set
+ return;
+ }
+
+ PropertySetter setter;
+ // Walk each cmd and set the property
+ for( int i=0; i<commands.size(); i++) {
+ try {
+ Property property = properties.get(i);
+ setter = application.getPropertySetterRegistry().getPropertySetter(property);
+ // Set the value only if we have a getter command.
+ ComputePropertyValueCommand getterCmd = commands.get(i);
+ if(getterCmd != null) {
+ setter.setValue(view, getterCmd.getCmdValue() );
+ }
+
+ } catch (NotFoundException e) {
+ // No setter found
+ System.err.println(e.getMessage());
+ } catch (NullPointerException e) {
+ // A command is null
+ }
+ }
+
+ }
+
+
+
+ @Override
+ public void layerAdded(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + ".layerAdded() " + notification.getNewValue());
+
+ if( ! (notification.getNewValue() instanceof AbstractLayer) ) {
+ System.err.println( "TODO: " + this.getClass().getSimpleName() + ".layerAdded() " + notification.getOldValue() + " - recompute for LayerOperator not implemented yet.");;
+ return;
+ }
+
+ // Extract the affected layer
+ AbstractLayer layer = (AbstractLayer)notification.getNewValue();
+
+ try {
+ checkApplication();
+ recomputePropertiesForAllViewsOf(layer);
+ } catch (LayersException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+
+
+ @Override
+ public void layerRemoved(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + " layerRemoved() " + notification.getOldValue());
+
+ if( ! (notification.getOldValue() instanceof AbstractLayer) ) {
+ System.err.println( "TODO: " + this.getClass().getSimpleName() + ".layerRemoved() " + notification.getOldValue() + " - recompute() after removing layerOperator not implemented yet.");;
+ return;
+ }
+ // Extract the affected layer
+ AbstractLayer layer = (AbstractLayer)notification.getOldValue();
+
+ try {
+ checkApplication();
+ recomputePropertiesForAllViewsOf(layer);
+ } catch (LayersException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+
+
+ /**
+ * Recompute the properties of the views attached to the specified layers.
+ *
+ * @param layer
+ * @throws LayersException
+ */
+ private void recomputePropertiesForAllViewsOf(AbstractLayer layer) throws LayersException {
+ // We need the list of affected properties
+ List<Property> properties = layer.getAttachedProperties();
+
+ // We need the list of affected Views.
+ List<View> views = layer.getViews();
+ if( views.size() == 0) {
+ return;
+ }
+
+ // For each view, recompute the Properties
+ recompute( views, properties );
+ }
+
+
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerMoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerMoved(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + " layerMoved(not tested) " + notification.getNewValue());
+
+ // Extract the affected layer
+ AbstractLayer layer = (AbstractLayer)notification.getNewValue();
+
+ try {
+ checkApplication();
+ recomputePropertiesForAllViewsOf(layer);
+ } catch (LayersException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerSet(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerSet(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + " layerSet(not implemented) " + notification.getNewValue());
+
+ }
+
+
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void viewAddedToLayer(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + " viewAddedToLayer( " + notification.getNewValue() + " )");
+
+ // We need to find the view, the layer in which it is added,
+ // and the properties attached to this layer.
+ // Then, we compute this property and set it to the view.
+ try {
+ AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+ View view = LayersModelEventUtils.ViewEvents.getViewAdded(notification);
+
+
+ checkApplication();
+ List<Property> properties = layer.getAttachedProperties();
+
+ List<ComputePropertyValueCommand> commands = layersStack.getPropertiesComputePropertyValueCommand(view, properties);
+ if(commands == null) {
+ // No property to set
+ return;
+ }
+
+ PropertySetter setter;
+ // Walk each cmd and set the property
+ for( int i=0; i<commands.size(); i++) {
+ try {
+ Property property = properties.get(i);
+ setter = application.getPropertySetterRegistry().getPropertySetter(property);
+ setter.setValue(view, commands.get(i).getCmdValue() );
+ } catch (NotFoundException e) {
+ // No setter found
+ System.err.println(e.getMessage());
+ } catch (NullPointerException e) {
+ // A command is null
+ }
+ }
+ } catch (LayersException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+ @Override
+ public void multiViewsAddedToLayer(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + ".multiViewsAddedToLayer( " + notification.getNewValue() + " )");
+
+ // We need to find the view, the layer in which it is added,
+ // and the properties attached to this layer.
+ // Then, we compute this property and set it to the view.
+ try {
+ AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+ List<View> views = LayersModelEventUtils.ViewEvents.getViewsAdded(notification);
+
+ checkApplication();
+ List<Property> properties = layer.getAttachedProperties();
+ recompute(views, properties);
+
+ } catch (LayersException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void viewRemovedFromLayer(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + " viewRemovedFromLayer( " + notification.getOldValue() + " )");
+ // We need to find the view, the layer in which it is added,
+ // and the properties attached to this layer.
+ // Then, we compute this property and set it to the view.
+ try {
+ AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+ View view = LayersModelEventUtils.ViewEvents.getViewRemoved(notification);
+
+ checkApplication();
+ List<Property> properties = layer.getAttachedProperties();
+
+ List<ComputePropertyValueCommand> commands = layersStack.getPropertiesComputePropertyValueCommand(view, properties);
+ if(commands == null) {
+ // No property to set
+ return;
+ }
+
+ PropertySetter setter;
+ // Walk each cmd and set the property
+ for( int i=0; i<commands.size(); i++) {
+ try {
+ Property property = properties.get(i);
+ setter = application.getPropertySetterRegistry().getPropertySetter(property);
+ setter.setValue(view, commands.get(i).getCmdValue() );
+ } catch (NotFoundException e) {
+ // No setter found
+ System.err.println(e.getMessage());
+ } catch (NullPointerException e) {
+ // A command is null
+ }
+ }
+ } catch (LayersException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void multiViewsRemovedFromLayer(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + " multiViewsRemovedFromLayer( " + notification.getOldValue() + " )");
+
+ // We need to find the view, the layer in which it is added,
+ // and the properties attached to this layer.
+ // Then, we compute this property and set it to the view.
+ try {
+ AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+ List<View> views = LayersModelEventUtils.ViewEvents.getViewsRemoved(notification);
+
+ checkApplication();
+ List<Property> properties = layer.getAttachedProperties();
+ recompute(views, properties);
+
+ } catch (LayersException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+
+
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void viewMovedBetweenLayer(Notification notification) {
+ System.out.println(this.getClass().getSimpleName() + " viewMovedBetweenLayer(not implemented) " + notification.getNewValue());
+
+ }
+
+
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener#diagramViewAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ @Override
+ public void diagramViewAdded(Notification msg) {
+ System.out.println(this.getClass().getSimpleName() + " diagramViewAdded(not implemented) " + msg.getNewValue());
+
+ // WARNING !!!
+ // Some filtering should be done on the event.
+ // When a View is removed, the event is sent for each of its parts. This
+ // result in multiple events receiving.
+ // Only events on Shape and Links are useful. So, we need to
+ // do some filtering (in the DiagramViewEventNotifier ?).
+ }
+
+
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener#diagramViewRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ @Override
+ public void diagramViewRemoved(Notification msg) {
+ System.out.println(this.getClass().getSimpleName() + " diagramViewRemoved(not implemented) " + msg.getOldValue());
+
+ // WARNING !!!
+ // Some filtering should be done on the event.
+ // When a View is removed, the event is sent for each of its parts. This
+ // result in multiple events receiving.
+ // Only events on Shape and Links are useful. So, we need to
+ // do some filtering (in the DiagramViewEventNotifier ?).
+ }
+
+
+
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifier.java
new file mode 100644
index 00000000000..0b28b9659e6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifier.java
@@ -0,0 +1,444 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils;
+
+
+/**
+ * This class listen to a {@link LayersStack} and send event to listeners.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersModelEventNotifier {
+
+ /**
+ * The observed {@link LayersStack}.
+ */
+ protected LayersStack layersStack;
+
+ /**
+ * List of listener to notify.
+ */
+ protected List<ILayersModelEventListener> listeners = new ArrayList<ILayersModelEventListener>();
+
+ /**
+ * listener on layers changes.
+ *
+ */
+ protected Adapter layersListener = new EContentAdapter() {
+
+ @Override
+ public void notifyChanged(Notification notification) {
+ System.err.println( this.getClass().getSimpleName() + ".event received " + notification.getFeature());
+ // Self atttach
+ super.notifyChanged(notification);
+
+ // Check layers modification
+ // There is two sources: LayerOperator::layers and LayersStack::layers
+ if( notification.getFeature() == LayersPackage.eINSTANCE.getLayerOperator_Layers()
+ || notification.getFeature() == LayersPackage.eINSTANCE.getLayersStack_Layers() ) {
+ // LayerOperator::layers || LayersStack::layers
+ // check the event type.
+ switch(notification.getEventType()) {
+ case Notification.SET:
+ fireLayerSet(notification);
+ break;
+ case Notification.ADD:
+ // A layer is added
+ fireLayerAdded(notification);
+ break;
+ case Notification.REMOVE:
+ // A layer is removed
+ fireLayerRemoved(notification);
+ break;
+ case Notification.MOVE:
+ // A layer is moved
+ fireLayerMoved(notification);
+ break;
+ }
+ }
+ // Check view event
+ // View event can by fired by: AbstractLayer::views
+ else if (notification.getFeature() == LayersPackage.eINSTANCE.getAbstractLayer_Views() ) {
+
+ // check the event type.
+ switch(notification.getEventType()) {
+ case Notification.ADD:
+ // A layer is added
+ // the concerned view
+// View view = (View)notification.getNewValue();
+// AbstractLayer layer = (AbstractLayer)notification.getNotifier()
+
+ fireViewAddedToLayer(notification);
+ break;
+ case Notification.ADD_MANY:
+ // A layer is added
+ // the concerned view
+// View view = (View)notification.getNewValue();
+// AbstractLayer layer = (AbstractLayer)notification.getNotifier()
+
+ fireMultiViewsAddedToLayer(notification);
+ break;
+ case Notification.REMOVE:
+ // A layer is removed
+ // the concerned view
+// View view = (View)notification.getOldValue();
+// AbstractLayer layer = (AbstractLayer)notification.getNotifier()
+
+ fireViewRemovedFromLayer(notification);
+ break;
+ case Notification.REMOVE_MANY:
+ // A layer is removed
+ // the concerned view
+// View view = (View)notification.getOldValue();
+// AbstractLayer layer = (AbstractLayer)notification.getNotifier()
+
+ fireMultiViewsRemovedFromLayer(notification);
+ break;
+ }
+
+ }
+ // Check instance addition/deletion
+ // instance event can by fired by: AbstractLayer::propertyValuesMap
+ else if (notification.getFeature() == LayersPackage.eINSTANCE.getAbstractLayer_PropertyValueMap() ) {
+ // check the event type.
+ switch(notification.getEventType()) {
+// case Notification.SET:
+// {
+// // A key is added
+// break;
+// }
+// case Notification.UNSET:
+// // A key is added
+// break;
+ case Notification.ADD:
+ {
+ // An entry is added
+ StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)notification.getNewValue();
+// System.out.println("ADD" + entry.getValue()
+// + ", key=" + entry.getKey());
+ // Add the corresponding instance to propertyValues
+ //Layer layer = (Layer)notification.getNotifier();
+ //String propertyName = entry.getKey();
+ //TypeInstance propertyValue = (TypeInstance)entry.getValue();
+ firePropertyValueAddedEvent(notification);
+ break;
+ }
+ case Notification.REMOVE:
+ {
+ // An entry is removed
+ StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)notification.getOldValue();
+// System.out.println("REMOVE" + entry.getValue()
+// + ", key=" + entry.getKey());
+ // Add the corresponding instance to propertyValues
+ //Layer layer = (Layer)notification.getNotifier();
+ //String propertyName = entry.getKey();
+ //TypeInstance propertyValue = (TypeInstance)entry.getValue();
+ firePropertyValueRemoved(notification);
+ break;
+ }
+ default:
+ break;
+ }
+
+ }
+ // Check if the isLayerEnabled is modified
+ // sources: LayerExpression::IsLayerEnabled
+ else if(notification.getFeature() == LayersPackage.eINSTANCE.getLayerExpression_IsLayerEnabled() ) {
+ firePropertyValueChanged(notification);
+ }
+
+ // Check property instance modification event
+ // instance change event can by fired by: any modification in a subclass of TypeInstance
+ else {
+ try {
+ // Lookup if the event comes from a type instance
+ TypeInstance ancestor = (TypeInstance)ECoreUtils.lookupAncestorOfType((EObject)notification.getNotifier(), LayersPackage.eINSTANCE.getTypeInstance());
+ // originating layer
+ AbstractLayer layer = (AbstractLayer)ECoreUtils.lookupAncestorOfType((EObject)notification.getNotifier(), LayersPackage.eINSTANCE.getAbstractLayer());
+ // or: layer = (AbstractLayer)ancestor.eContainer().eContainer().eContainer();
+ // StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)ancestor.eContainer();
+ //String propertyName = entry.getKey();
+ //TypeInstance propertyValue = (TypeInstance)entry.getValue();
+ //
+// String propertyName
+ // check the event type.
+ switch(notification.getEventType()) {
+ case Notification.SET:
+ // An instance value is set
+ firePropertyValueChanged(notification);
+ break;
+ case Notification.ADD:
+ // An instance value is set
+ firePropertyValueChanged(notification);
+ break;
+ case Notification.REMOVE:
+ // An instance value is set
+ firePropertyValueChanged(notification);
+ break;
+ }
+ } catch (NotFoundException e) {
+ // lookupAncestorOfType() found nothing
+ // silently fail
+ }
+
+
+
+ }
+
+ }
+ };
+
+ /**
+ * Constructor.
+ *
+ * @param layersStack The observed {@link LayersStack}.
+ */
+ public LayersModelEventNotifier(LayersStack layersStack) {
+ this.layersStack = layersStack;
+ activate();
+ }
+
+ /**
+ * setup the listeners.
+ */
+ protected void activate() {
+ layersStack.eAdapters().add(layersListener);
+
+ }
+
+ /**
+ * remove the listeners.
+ */
+ protected void deactivate() {
+ layersStack.eAdapters().remove(layersListener);
+
+ }
+
+ /**
+ * Dispose this object.
+ */
+ public void dispose() {
+
+ deactivate();
+ listeners.clear();
+ layersListener = null;
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ public boolean isDisposed() {
+ return layersListener==null;
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addLayersModelEventListener(ILayersModelEventListener listener) {
+
+ if(listener == null ) {
+ return;
+ }
+
+ // Check if exist
+ if( listeners.contains(listener)) {
+ return;
+ }
+
+ listeners.add(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeLayersModelEventListener(ILayersModelEventListener listener) {
+
+ listeners.remove(listener);
+ }
+ /**
+ * Method called when a value is added to one layer.
+ * The vent contains: the layer, the property name, the new value.
+ *
+ * @param notification
+ */
+ public void firePropertyValueAddedEvent( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.propertyValueAdded(notification);
+ }
+ }
+
+ /**
+ * Method called when a value is removed from one layer.
+ * The vent contains: the layer, the property name, the new value.
+ *
+ * @param notification
+ */
+ public void firePropertyValueRemoved( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.propertyValueRemoved(notification);
+ }
+ }
+
+ /**
+ * Method called when a value is changed in one layer.
+ * The vent contains: the layer, the property name, the new value.
+ *
+ * @param notification
+ */
+ public void firePropertyValueChanged( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.propertyValueChanged(notification);
+ }
+ }
+
+ /**
+ * Method called when a layer is added to one layer.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void fireLayerSet( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.layerSet(notification);
+ }
+ }
+
+ /**
+ * Method called when a layer is added to one layer.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void fireLayerAdded( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.layerAdded(notification);
+ }
+ }
+
+ /**
+ * Method called when a layer is removed from one layer.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void fireLayerRemoved( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.layerRemoved(notification);
+ }
+ }
+
+ /**
+ * Method called when a layer is moved in LayerStack.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void fireLayerMoved( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.layerMoved(notification);
+ }
+ }
+
+
+ /**
+ * Method called when a view is added to one layer.
+ * The event contains: the layer, the view.
+ *
+ * @param notification
+ */
+ public void fireViewAddedToLayer( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.viewAddedToLayer(notification);
+ }
+ }
+
+ /**
+ * Method called when a view is added to one layer.
+ * The event contains: the layer, the view.
+ *
+ * @param notification
+ */
+ public void fireMultiViewsAddedToLayer( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.multiViewsAddedToLayer(notification);
+ }
+ }
+
+ /**
+ * Method called when a view is removed from one layer.
+ * The event contains: the layer, the view.
+ *
+ * @param notification
+ */
+ public void fireViewRemovedFromLayer( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.viewRemovedFromLayer(notification);
+ }
+ }
+
+ /**
+ * Method called when a view is removed from one layer.
+ * The event contains: the layer, the view.
+ *
+ * @param notification
+ */
+ public void fireMultiViewsRemovedFromLayer( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.multiViewsRemovedFromLayer(notification);
+ }
+ }
+
+ /**
+ * Method called when a view is moved from one layer to another layer.
+ * The event contains: the layer, the view.
+ *
+ * @param notification
+ */
+ public void fireViewMovedBetweenLayer( Notification notification ) {
+
+ for(ILayersModelEventListener listener : listeners) {
+ listener.viewMovedBetweenLayer(notification);
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventUtils.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventUtils.java
new file mode 100644
index 00000000000..e58b3bfe2ac
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventUtils.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils;
+
+
+/**
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersModelEventUtils {
+
+
+ static public class PropertyEvents {
+
+ /**
+ * Get the abstract layer containing the notifier.
+ *
+ * @param notification
+ * @return
+ * @throws NotFoundException
+ */
+ static public AbstractLayer getAbstractLayer(Notification notification) throws NotFoundException {
+ return (AbstractLayer)ECoreUtils.lookupAncestorOfType((EObject)notification.getNotifier(), LayersPackage.eINSTANCE.getAbstractLayer());
+ }
+
+ /**
+ * Get the name of the property concerned by the event.
+ * @return
+ */
+ static public String getPropertyNameFromValueAdd(Notification notification) {
+
+ StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)notification.getNewValue();
+ return entry.getKey();
+ }
+ /**
+ * Get the name of the property concerned by the event.
+ * @return
+ */
+ static public String getPropertyNameFromValueRemove(Notification notification) {
+
+ StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)notification.getOldValue();
+ return entry.getKey();
+ }
+ /**
+ * Get the name of the property concerned by the event.
+ * @return
+ * @throws NotFoundException
+ */
+ static public String getPropertyNameFromValueSet(Notification notification) throws NotFoundException {
+
+ StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)ECoreUtils.lookupAncestorOfType((EObject)notification.getNotifier(), LayersPackage.eINSTANCE.getStringToTypeInstanceMap());
+ return entry.getKey();
+ }
+ }
+
+ /**
+ *
+ *
+ */
+ static public class ViewEvents {
+
+ /**
+ * Get the abstract layer containing the notifier.
+ *
+ * @param notification
+ * @return
+ * @throws NotFoundException
+ */
+ static public AbstractLayer getAbstractLayer(Notification notification) throws NotFoundException {
+ return (AbstractLayer)notification.getNotifier();
+ }
+
+ /**
+ * Get the view added to layer
+ *
+ * @param notification
+ * @return
+ * @throws NotFoundException
+ */
+ static public View getViewAdded(Notification notification) throws NotFoundException {
+ return (View)notification.getNewValue();
+ }
+
+ /**
+ * Get the view removed from layer
+ *
+ * @param notification
+ * @return
+ * @throws NotFoundException
+ */
+ static public View getViewRemoved(Notification notification) throws NotFoundException {
+ return (View)notification.getOldValue();
+ }
+
+ /**
+ * Get the views[*] that have been removed from the layer.
+ *
+ * @param notification
+ * @return
+ */
+ public static List<View> getViewsRemoved(Notification notification) {
+ return (List<View>)notification.getOldValue();
+ }
+
+ public static List<View> getViewsAdded(Notification notification) {
+ return (List<View>)notification.getNewValue();
+ }
+
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifier.java
new file mode 100644
index 00000000000..db8768dd68e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifier.java
@@ -0,0 +1,302 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.model.ILayersModelRootEventListener;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModelEventRootNotifier;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class is used to notify listeners of events on the LayerStack life cycle.
+ * The class require the {@link LayersModel} to register itself to appropriate objects.
+ * The class take care to check if the {@link LayersStackApplication} exist or not.
+ * So, it can be used in all cases, even if the {@link LayersStackApplication} is not
+ * created.
+ *
+ * The following events are fired:
+ * <ul>
+ * <li>LayerStack added</li>
+ * <li>LayerStack removed</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStackAndApplicationLifeCycleEventNotifier {
+
+ /**
+ * States used in the state machine.
+ */
+ protected enum State {NoApplication, ApplicationCreated, disposed};
+ protected State state;
+
+ protected LayersModel layersModel;
+
+ /**
+ * Notifier on {@link LayersStack} life cycle events
+ */
+ protected LayersStackApplicationEventNotifier layersStackApplicationEventNotifier;
+
+ /**
+ * Notifier on {@link LayersStackApplication} life cycle events.
+ */
+ protected LayersModelEventRootNotifier layersModelEventRootNotifier;
+
+ /**
+ * Listener on {@link LayersStackApplication} life cycle events
+ */
+ protected ILayersModelRootEventListener layersStackApplicationLifeCycleEventListener = new ILayersModelRootEventListener() {
+
+ @Override
+ public void layersModelRootRemoved(Notification msg) {
+ if( state == State.ApplicationCreated) {
+ transitionApplicationCreatedToNoApplicationState();
+ }
+ }
+
+ @Override
+ public void layersModelRootAdded(Notification msg) {
+ if( state == State.NoApplication) {
+ transitionNoApplicationToApplicationCreatedState();
+ }
+ }
+ };
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ */
+ public LayersStackAndApplicationLifeCycleEventNotifier(LayersModel layersModel) {
+ this.layersModel = layersModel;
+ createListeners();
+ initState();
+ }
+
+ /**
+ * Init the state of the object
+ */
+ private void initState() {
+
+ if( layersModel.lookupLayerStackApplication() != null) {
+ transitionInitToApplicationCreatedState();
+ }
+ else {
+ transitionInitToNoApplicationState();
+ }
+ }
+
+ /**
+ * Initialize the class for the NoApplication state:
+ * - listen on LayersModel notifiers for application creation
+ */
+ private void transitionInitToApplicationCreatedState() {
+ activateLayersStackLifeCycleEventNotifier();
+ state = State.ApplicationCreated;
+ }
+
+ /**
+ * Initialize the class for the ApplicationCreated state:
+ * - listen on appropriate notifiers
+ * - check if some LayerStack are already there.
+ */
+ private void transitionInitToNoApplicationState() {
+ state = State.NoApplication;
+ }
+
+ /**
+ * Initialize the class for the NoApplication state:
+ * - listen on LayersModel notifiers for application creation
+ */
+ private void transitionNoApplicationToApplicationCreatedState() {
+ activateLayersStackLifeCycleEventNotifier();
+ state = State.ApplicationCreated;
+ }
+
+ /**
+ * Initialize the class for the ApplicationCreated state:
+ * - listen on appropriate notifiers
+ * - check if some LayerStack are already there.
+ */
+ private void transitionApplicationCreatedToNoApplicationState() {
+ deactivateLayersStackLifeCycleEventNotifier();
+ state = State.NoApplication;
+ }
+
+
+ /**
+ * Activate the notifier.
+ *
+ */
+ protected void activate() {
+ createListeners();
+ }
+
+ /**
+ * Deactivate listeners
+ */
+ protected void deactivate() {
+ deleteListeners();
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ protected void dispose() {
+ // Deactivate listeners
+ deleteListeners();
+ layersModel = null;
+ state = State.disposed;
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ protected boolean isDisposed() {
+ return state == State.disposed;
+ }
+
+ /**
+ * Activate the notifier.
+ */
+ private void activateLayersStackLifeCycleEventNotifier() {
+ layersStackApplicationEventNotifier.activate();
+
+ }
+
+ /**
+ * Deactivate the notifier.
+ */
+ private void deactivateLayersStackLifeCycleEventNotifier() {
+ layersStackApplicationEventNotifier.deactivate();
+
+ }
+
+
+ /**
+ * Create and activate internal listeners
+ */
+ private void createListeners() {
+ createLayersModelAndDiagramDeletionNotifiers();
+ createLayersModelRootNotifier();
+ }
+
+ /**
+ * Deactivate internal listeners
+ */
+ private void deleteListeners() {
+ deleteLayersModelAndDiagramDeletionNotifiers();
+ deleteLayersModelRootNotifier();
+ }
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ private void createLayersModelRootNotifier() {
+ /**
+ * Listen on layersModel to be inform when the application object is created.
+ * When it is created, we can listen on it.
+ */
+
+ layersModelEventRootNotifier = new LayersModelEventRootNotifier(layersModel);
+ layersModelEventRootNotifier.addEventListener(layersStackApplicationLifeCycleEventListener);
+ }
+
+
+ /**
+ * Deactivate the listeners.
+ *
+ */
+ private void deleteLayersModelRootNotifier() {
+ /**
+ * Listen on layersModel to be inform when the application object is created.
+ * When it is created, we can listen on it.
+ */
+ if( layersModelEventRootNotifier != null ) {
+ layersModelEventRootNotifier.removeEventListener(layersStackApplicationLifeCycleEventListener);
+ layersModelEventRootNotifier.dispose();
+ layersModelEventRootNotifier = null;
+ }
+ }
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ private void createLayersModelAndDiagramDeletionNotifiers() {
+ /**
+ * Listen on layersModel to be inform when the application object is created.
+ * When it is created, we can listen on it.
+ */
+ layersStackApplicationEventNotifier = new LayersStackApplicationEventNotifier(layersModel, false);
+// layersStackApplicationEventNotifier.addLayersModelEventListener(layersStackLifeCycleEventListener);
+ }
+
+ /**
+ * Deactivate listeners
+ */
+ protected void deleteLayersModelAndDiagramDeletionNotifiers() {
+ if(layersStackApplicationEventNotifier!=null) {
+// layersStackApplicationEventNotifier.removeLayersModelEventListener(layersStackLifeCycleEventListener);
+ layersStackApplicationEventNotifier.dispose();
+ layersStackApplicationEventNotifier = null;
+ }
+ }
+
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addLayersModelEventListener(ILayersStackApplicationEventListener listener) {
+ // Add to the inner notifier
+ layersStackApplicationEventNotifier.addLayersModelEventListener(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeLayersModelEventListener(ILayersStackApplicationEventListener listener) {
+
+ layersStackApplicationEventNotifier.removeLayersModelEventListener(listener);
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addLayersStackApplicationLifeCycleEventListener(ILayersModelRootEventListener listener) {
+ // Add to the inner notifier
+ layersModelEventRootNotifier.addEventListener(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeLayersStackApplicationLifeCycleEventListener(ILayersModelRootEventListener listener) {
+
+ layersModelEventRootNotifier.removeEventListener(listener);
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifier.java
new file mode 100644
index 00000000000..7680fc091f9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifier.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class listen to a {@link LayersStackApplication} and send following to listeners:
+ * <ul>
+ * <li>LayerStack added</li>
+ * <li>LayerStack removed</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStackApplicationEventNotifier {
+
+ protected LayersModel layersModel;
+
+ /**
+ * List of listener to notify.
+ */
+ protected List<ILayersStackApplicationEventListener> listeners = new ArrayList<ILayersStackApplicationEventListener>();
+
+ /**
+ * listener on LayerStack events
+ */
+ protected Adapter layerStackListener = new AdapterImpl() {
+ public void notifyChanged(Notification msg) {
+
+ switch(msg.getFeatureID(LayersStackApplication.class)) {
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS :
+ switch(msg.getEventType()) {
+ case Notification.ADD:
+ // a layerStack is added to application
+ // layerStack = msg.getNewValue()
+ layerStackAdded(msg);
+ break;
+
+ case Notification.REMOVE:
+ // a layerStack is removed from application
+ // layerStack = msg.getOldValue()
+ layerStackRemoved(msg);
+ break;
+
+ default:
+ break;
+ }
+ break;
+ };
+ };
+ };
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ */
+ public LayersStackApplicationEventNotifier(LayersModel layersModel) {
+ this.layersModel = layersModel;
+ activate();
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ * @param activate True if the notifier should be activated immediately. False otherwise.
+ */
+ public LayersStackApplicationEventNotifier(LayersModel layersModel, boolean activate) {
+ this.layersModel = layersModel;
+ if( activate) {
+ activate();
+ }
+ }
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ protected void activate() {
+ // Listen on LayerStackApplication for LayerStack creation
+ // TODO Avoid to create the application here. Listen on its creation
+ // and listen on it when created.
+
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+
+ application.eAdapters().add( layerStackListener );
+ }
+
+ /**
+ * Deactivate listeners
+ */
+ protected void deactivate() {
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+
+ application.eAdapters().remove( layerStackListener );
+
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ protected void dispose() {
+ // Deactivate listeners
+ deactivate();
+ layersModel = null;
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ protected boolean isDisposed() {
+ return layersModel == null;
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addLayersModelEventListener(ILayersStackApplicationEventListener listener) {
+
+ if(listener == null ) {
+ return;
+ }
+
+ // Check if exist
+ if( listeners.contains(listener)) {
+ return;
+ }
+
+ listeners.add(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeLayersModelEventListener(ILayersStackApplicationEventListener listener) {
+
+ listeners.remove(listener);
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ protected void layerStackAdded(Notification msg) {
+ for(ILayersStackApplicationEventListener listener : listeners) {
+ listener.layerStackAdded(msg);
+ }
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is removed from the {@link LayersStackApplication}
+ * @param msg
+ */
+ protected void layerStackRemoved(Notification msg) {
+ for(ILayersStackApplicationEventListener listener : listeners) {
+ listener.layerStackRemoved(msg);
+ }
+ }
+
+ /**
+ * Utility method returning the layer stack in case of addedLayer event.
+ * @param msg
+ * @return
+ */
+ public static LayersStack getAddedLayerStack(Notification msg) {
+ return (LayersStack)msg.getNewValue();
+ }
+
+ /**
+ * Utility method returning the layer stack in case of removeLayer event.
+ * @param msg
+ * @return
+ */
+ public static LayersStack getRemovedLayerStack(Notification msg) {
+ return (LayersStack)msg.getOldValue();
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramHelper.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramHelper.java
new file mode 100644
index 00000000000..6dc42162150
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramHelper.java
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class manage a notation.Diagram. It allows to :
+ * <ul>
+ * <li>Add or remove a LayersStack</li>
+ * <li>get the LayersStackMngr if a LayersStack exist.</li>
+ * </ul>
+ *
+ * @author Cedric dumoulin
+ *
+ */
+public class NotationDiagramHelper {
+
+ /**
+ * Associated Diagram.
+ */
+ protected Diagram diagram;
+
+ /**
+ * Layers model.
+ */
+ protected LayersModel layersModel;
+
+ protected LayersStackApplication layersApplication;
+
+// /**
+// * The associated {@link LayersStackMngr}. Maybe null if no LayersStack is associated.
+// */
+// protected LayersStackMngr layerStackMngr;
+//
+// /**
+// * Notifier sending event when the layerStack is added or removed.
+// */
+// private LayersStackAttachedNotifier layerStackAttachedNotifier;
+
+// /**
+// * Listen on events from the layerStackAttachedNotifier.
+// */
+// private LayersStackAttachedListener layerStackAttachedListener = new LayersStackAttachedListener() {
+//
+// public void layerStackRemoved(LayersStackAttachedEvent event) {
+// layerStackMngr.dispose();
+// layerStackMngr = null;
+// }
+//
+// public void layerStackAttached(LayersStackAttachedEvent event) {
+//
+// if(layerStackMngr != null)
+// {
+// layerStackMngr.dispose();
+// layerStackMngr = null;
+// }
+//
+// layerStackMngr = new LayersStackMngr(event.getLayersStack());
+// }
+//
+// public void diagramChanged(LayersStackAttachedEvent event) {
+// // Not used because diagram is never set.
+// if(layerStackMngr != null)
+// {
+// layerStackMngr.dispose();
+// layerStackMngr = null;
+// }
+//
+// layerStackMngr = new LayersStackMngr(event.getLayersStack());
+//
+// }
+// };
+
+ /**
+ * Constructor.
+ * Construct the manager and initialize it.
+ * @param layersModel
+ *
+ */
+ public NotationDiagramHelper(LayersModel layersModel, Diagram diagram) {
+ this.diagram = diagram;
+ this.layersModel = layersModel;
+
+// // Set the layerStackMngr if necessary
+// LayersStack layerStack = LayersStackUtil.getInstance().lookupLayersStack(diagram);
+// if(layerStack != null) {
+// layerStackMngr = new LayersStackMngr(layerStack);
+// }
+//
+// // Set the listeners on changes
+// layerStackAttachedNotifier = new LayersStackAttachedNotifier(diagram);
+// layerStackAttachedNotifier.addLayersStackAttachedEventListener(layerStackAttachedListener);
+
+ activate();
+ }
+
+ /**
+ * Activate the manager.
+ */
+ public void activate() {
+// layerStackAttachedNotifier.activate();
+ }
+
+ /**
+ * Deactivate the manager.
+ */
+ public void deactivate() {
+// layerStackAttachedNotifier.deactivate();
+ }
+
+ /**
+ * Dispose all resources.
+ */
+ public void dispose() {
+// layerStackAttachedNotifier.deactivate();
+
+ diagram = null;
+ }
+
+
+ /**
+ * @return the diagram
+ */
+ public Diagram getDiagram() {
+ return diagram;
+ }
+
+
+// /**
+// * Return the {@link LayersStackMngr} if any. Throw an
+// * @return the layerStackMngr
+// * @throws NotSetException If the layerStackMngr is not set.
+// */
+// public LayersStackMngr getLayersStackMngr() throws NotSetException {
+//
+// if(layerStackMngr == null)
+// throw new NotSetException(this.getClass().getSimpleName() + ".getLayersStackMngr(): layerStackMngr is not set.");
+//
+// return layerStackMngr;
+// }
+
+ /**
+ * Attach the {@link LayersStack} to the diagram.
+ * Do nothing if a LayersStack is already attached.
+ */
+ public void attachLayersStack() {
+
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+ application.getLayersStackFor(diagram);
+ }
+
+ /**
+ * detach the {@link LayersStack} from the diagram.
+ * Do nothing if no LayersStack is attached.
+ */
+ public void removeLayersStack() {
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+ application.removeLayersStackFor(diagram);
+ }
+
+ /**
+ * Return True if a {@link LayersStack} is attached to the diagram.
+ *
+ * @return True if a {@link LayersStack} is attached to the diagram.
+ */
+ public boolean isLayersStackAttached() {
+ LayersStackApplication application = layersModel.lookupLayerStackApplication();
+ if(application == null ) {
+ return false;
+ }
+ return application.isLayersStackAttachedFor(diagram);
+ }
+
+// /**
+// * Add a listener for the {@link LayersStackActivatedEvent}.
+// *
+// * @param listener
+// */
+// public void addLayersStackAttachedEventListener(LayersStackAttachedListener listener) {
+// layerStackAttachedNotifier.addLayersStackAttachedEventListener(listener);
+// }
+//
+// /**
+// * Remove a listener for the {@link LayersStackActivatedEvent}.
+// *
+// * @param listener
+// */
+// public void removeLayersStackAttachedEventListener(LayersStackAttachedListener listener) {
+// layerStackAttachedNotifier.removeLayersStackAttachedEventListener(listener);
+// }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifier.java
new file mode 100644
index 00000000000..35f22c18782
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifier.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class listen to a {@link Resource} and send following events to listeners:
+ * <ul>
+ * <li>diagram removed</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationDiagramRemovedFromResourceEventNotifier {
+
+ protected NotationModel notationModel;
+
+ /**
+ * List of listener to notify.
+ */
+ protected List<INotationDiagramRemovedEventListener> listeners = new ArrayList<INotationDiagramRemovedEventListener>();
+
+ protected Adapter notationDiagramRemovedListener = new AdapterImpl() {
+ public void notifyChanged(Notification msg) {
+
+ // TODO When a Resource is unloaded, each diagram is removed and a corresponding event is fired.
+ // We need to separate event from a regular removal (user choose to remove a diagram) from events
+ // event fired by 'resource.unload()' (to be done).
+ if( msg.getEventType() == Notification.REMOVE
+ && msg.getNotifier() instanceof Resource
+ && msg.getOldValue() instanceof Diagram ) {
+ // A diagram is removed from its resource
+// System.err.println("Resource notified. Feature=" + msg.getFeature()
+// + ", type="+ msg.getEventType()
+// + ", newValue=" + msg.getNewValue()
+// + ", oldValue=" + msg.getOldValue());
+ Resource resource = (Resource)msg.getNotifier();
+ // Fire event only if resource is loaded. This should avoid firing event when the
+ // diagram is removed because the resource is unloading.
+ if( resource.isLoaded() ) {
+ fireDiagramRemovedEvent(msg);
+ }
+ }
+ };
+
+ };
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ */
+ public NotationDiagramRemovedFromResourceEventNotifier(NotationModel notationModel) {
+ this.notationModel = notationModel;
+ activate();
+ }
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ protected void activate() {
+ // Listen on diagram removed events
+ notationModel.getResource().eAdapters().add(notationDiagramRemovedListener);
+ }
+
+ /**
+ * Deactivate listeners
+ */
+ protected void deactivate() {
+ // Listen on diagram removed events
+ notationModel.getResource().eAdapters().remove(notationDiagramRemovedListener);
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ protected void dispose() {
+ // Deactivate listeners
+ deactivate();
+ notationModel = null;
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ protected boolean isDisposed() {
+ return notationModel == null;
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addLayersModelEventListener(INotationDiagramRemovedEventListener listener) {
+
+ if(listener == null ) {
+ return;
+ }
+
+ // Check if exist
+ if( listeners.contains(listener)) {
+ return;
+ }
+
+ listeners.add(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeLayersModelEventListener(INotationDiagramRemovedEventListener listener) {
+
+ listeners.remove(listener);
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ protected void fireDiagramRemovedEvent(Notification msg) {
+ for(INotationDiagramRemovedEventListener listener : listeners) {
+ listener.diagramRemoved(msg);
+ }
+ }
+
+ /**
+ * Get the removed diagram in case of diagramRemoved event
+ * @param msg
+ * @return
+ */
+ public static Diagram getRemovedDiagram(Notification msg) {
+ return (Diagram)msg.getOldValue();
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/ILayersModelRootEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/ILayersModelRootEventListener.java
new file mode 100644
index 00000000000..828388d7910
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/ILayersModelRootEventListener.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStackApplication}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayersModelRootEventListener {
+
+ /**
+ * Called by events when a root of type {@link LayersStackApplication} is added to the {@link LayersModel}
+ * elements.
+ * @param msg
+ */
+ public void layersModelRootAdded(Notification msg) ;
+
+ /**
+ * Called by events when a root of type {@link LayersStackApplication} is removed from the {@link Diagram} or one of its contained
+ * elements.
+ * @param msg
+ */
+ public void layersModelRootRemoved(Notification msg) ;
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModel.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModel.java
new file mode 100644
index 00000000000..085fc88afff
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModel.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.core.resource.AbstractModelWithSharedResource;
+import org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class declare the model used by the layer.
+ * This model is registered to Papyrus core ModelSet which take care to load the
+ * corresponding EMF resource.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersModel extends AbstractModelWithSharedResource<LayersStackApplication>{
+
+ /**
+ * File extension used for notation.
+ */
+ public static final String MODEL_FILE_EXTENSION = "di"; //$NON-NLS-1$
+
+ /**
+ * Model ID.
+ */
+ public static final String MODEL_ID = "org.eclipse.papyrus.layers.runtime.model.LayersModel"; //$NON-NLS-1$
+
+ /**
+ * Identifier used to retrieve the model from the ModelManager
+ *
+ * @see org.eclipse.papyrus.infra.core.resource.AbstractBaseModel#getIdentifier()
+ *
+ * @return
+ */
+ @Override
+ public String getIdentifier() {
+ return MODEL_ID;
+ }
+
+ /**
+ * Get the extension used for TraceModel resources
+ *
+ * @see org.eclipse.papyrus.infra.core.resource.AbstractBaseModel#getModelFileExtension()
+ *
+ * @return
+ */
+ @Override
+ protected String getModelFileExtension() {
+ return MODEL_FILE_EXTENSION;
+ }
+
+ /**
+ * Return true if the provided object is a root of the model, false otherwise.
+ * This method should be implemented by subclasses.
+ *
+ * @param object
+ * @return
+ */
+ @Override
+ protected boolean isModelRoot(EObject object) {
+ return object instanceof LayersStackApplication;
+ }
+
+ /**
+ * Lookup for the {@link LayersStackApplication} instance
+ * @return the {@link LayersStackApplication} or null if not found.
+ */
+ public LayersStackApplication lookupLayerStackApplication() {
+
+ return getModelRoot();
+ }
+
+ /**
+ * Get the {@link LayersStackApplication} object. Create it if not found.
+ * @return
+ */
+ public LayersStackApplication getLayerStackApplication() {
+ LayersStackApplication application = getModelRoot();
+ if( application != null) {
+ return application;
+ }
+ // Not found, create it
+ application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ addModelRoot(application);
+
+ return application;
+ }
+
+ /**
+ * Remove the specified application from the model.
+ * @param application
+ */
+ public void removeRoot(LayersStackApplication application) {
+ getResource().getContents().remove(application);
+
+ }
+
+ private LayersStackAndApplicationLifeCycleEventNotifier layersStackAndApplicationLifeCycleEventNotifier = null;
+ /**
+ * Get the associated {@link LayersStackAndApplicationLifeCycleEventNotifier}.
+ * There is only one such notifier associated to the model.
+ * @return
+ */
+ public LayersStackAndApplicationLifeCycleEventNotifier getLayersStackLifeCycleEventNotifier() {
+
+
+ // TODO Use an adapter to share a single instance in the model itself.
+ if( layersStackAndApplicationLifeCycleEventNotifier == null) {
+ // Create it
+ layersStackAndApplicationLifeCycleEventNotifier = new LayersStackAndApplicationLifeCycleEventNotifier(this);
+ }
+
+ return layersStackAndApplicationLifeCycleEventNotifier;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModelEventRootNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModelEventRootNotifier.java
new file mode 100644
index 00000000000..5399e17ef71
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModelEventRootNotifier.java
@@ -0,0 +1,174 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class listen to a {@link LayersModel} and send following events to listeners:
+ * <ul>
+ * <li>root of type {@link LayersStackApplication} added</li>
+ * <li>root of type {@link LayersStackApplication} removed</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ * TODO Rename to LayersStackApplicationLifeCycleEventNotifier
+ */
+public class LayersModelEventRootNotifier {
+
+ protected LayersModel layersModel;
+
+ /**
+ * List of listener to notify.
+ */
+ protected List<ILayersModelRootEventListener> listeners = new ArrayList<ILayersModelRootEventListener>();
+
+ protected Adapter modelListener = new AdapterImpl() {
+
+ /**
+ * Something happen on the tree of object
+ * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ public void notifyChanged(Notification notification) {
+
+
+ // Check Resource modification
+ // There is 1 sources:
+ // LayersModel::Resource::contents
+ if( notification.getFeatureID(Resource.class) == Resource.RESOURCE__CONTENTS) {
+ // LayerOperator::layers || LayersStack::layers
+ // check the event type.
+ switch(notification.getEventType()) {
+ case Notification.SET:
+
+ break;
+ case Notification.ADD:
+ // A root is added
+ if( notification.getNewValue() instanceof LayersStackApplication ) {
+ fireLayersModelRootAddedEvent(notification);
+ }
+ break;
+ case Notification.REMOVE:
+ // A root is removed
+ if( notification.getOldValue() instanceof LayersStackApplication ) {
+ fireLayersModelRootRemovedEvent(notification);
+ }
+ break;
+ }
+ }
+ }
+
+ };
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ */
+ public LayersModelEventRootNotifier(LayersModel layersModel) {
+ this.layersModel = layersModel;
+ activate();
+ }
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ protected void activate() {
+ // Listen on diagram removed events
+ layersModel.getResource().eAdapters().add(modelListener);
+ }
+
+ /**
+ * Deactivate listeners
+ */
+ protected void deactivate() {
+ // Listen on diagram removed events
+ layersModel.getResource().eAdapters().remove(modelListener);
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ public void dispose() {
+ // Deactivate listeners
+ deactivate();
+ layersModel = null;
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ protected boolean isDisposed() {
+ return layersModel == null;
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addEventListener(ILayersModelRootEventListener listener) {
+
+ if(listener == null ) {
+ return;
+ }
+
+ // Check if exist
+ if( listeners.contains(listener)) {
+ return;
+ }
+
+ listeners.add(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeEventListener(ILayersModelRootEventListener listener) {
+
+ listeners.remove(listener);
+ }
+
+ /**
+ * Called by events when a root is added to the {@link LayersModel}
+ * @param msg
+ */
+ protected void fireLayersModelRootAddedEvent(Notification msg) {
+ for(ILayersModelRootEventListener listener : listeners) {
+ listener.layersModelRootAdded(msg);
+ }
+ }
+
+ /**
+ * Called by events when a root is added to the {@link LayersModel}
+ * @param msg
+ */
+ protected void fireLayersModelRootRemovedEvent(Notification msg) {
+ for(ILayersModelRootEventListener listener : listeners) {
+ listener.layersModelRootRemoved(msg);
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/AbstractDerivedViewLayerNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/AbstractDerivedViewLayerNotifier.java
new file mode 100644
index 00000000000..a71a7afb2c0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/AbstractDerivedViewLayerNotifier.java
@@ -0,0 +1,133 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.runtime.notifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+
+/**
+ * Common ancestor of DerivedViewLayerNotifier.
+ * This class maintains a list of listeners. It allows to add and remove listeners.
+ * If there is no more listener, stop listening on external events.
+ * Start listening on external events as soon as there is a listener.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public abstract class AbstractDerivedViewLayerNotifier {
+
+ /**
+ * List of listeners that should be notified.
+ */
+ protected List<RegExpLayer> listeners = new ArrayList<RegExpLayer>();
+
+ /**
+ * Indicate if this Notifier is listening on externals events
+ */
+ private boolean isListening = false;
+
+ /**
+ * Attach the listener to this notifier.
+ *
+ * @param layer
+ */
+ public void addListener(RegExpLayer listener) {
+ if(!listeners.contains(listener)) {
+ listeners.add(listener);
+ checkStartListening();
+ }
+ }
+
+ /**
+ * Attach the listener to this notifier.
+ *
+ * @param layer
+ */
+ public void removeListener(RegExpLayer listener) {
+ listeners.remove(listener);
+ checkStopListening();
+
+ }
+
+ /**
+ * Attach the listener to this notifier.
+ *
+ * @param layer
+ */
+ public void removeAllListeners() {
+ isListening = false;
+ listeners.clear();
+ stopListening();
+ }
+
+ /**
+ * Check if we should start listening.
+ * If the class is not listening on externals events, and there is some listeners, then
+ * start listening (call {@link #startListening()} and set {@link #isListening()} to true.
+ */
+ private void checkStartListening() {
+ if( !isListening() && listeners.size() > 0) {
+ isListening=true;
+ startListening();
+ }
+ }
+
+ /**
+ * Check if we should stop listening.
+ * If the class is listening on externals events, and there is no more listeners, then
+ * stop listening (call {@link #stopListening()} and set {@link #isListening()} to false.
+ */
+ private void checkStopListening() {
+ if(isListening() && listeners.size() == 0) {
+ isListening = false;
+ stopListening();
+ }
+ }
+
+ /**
+ * fire the event to all registered listeners.
+ */
+ public void fireEvent( ) {
+ for( RegExpLayer listener : listeners) {
+// listener.evaluateExpr();
+ }
+ }
+
+ /**
+ * Start listening on external events.
+ * Should be implemented by subclass
+ */
+ abstract protected void startListening();
+
+ /**
+ * Stop listening on external events.
+ * Should be implemented by subclass
+ */
+ abstract protected void stopListening();
+
+ /**
+ * Return true if this Notifier is listening on externals events.
+ * @return
+ */
+ public boolean isListening() {
+ // This notifier is listening if there is some listener in the list
+ return isListening;
+ }
+
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DiagramChangedEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DiagramChangedEventNotifier.java
new file mode 100644
index 00000000000..30eea472991
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DiagramChangedEventNotifier.java
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.runtime.notifier;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Notify listeners when a change occurs on an domain element associated to an element of the LayerStack's diagram.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramChangedEventNotifier extends AbstractDerivedViewLayerNotifier {
+
+ /**
+ * {@link LayersStack} containing the {@link Diagram} on which this notifier is listening changes.
+ */
+ protected LayersStack layersStack;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param layersStack
+ */
+ public DiagramChangedEventNotifier(LayersStack layersStack) {
+ this.layersStack = layersStack;
+ }
+
+ /**
+ * Start listening on externals events that should be relayed by this Notifier.
+ * @see org.eclipse.papyrus.layers.runtime.notifier.AbstractDerivedViewLayerNotifier#startListening()
+ *
+ */
+ @Override
+ protected void startListening() {
+ // TODO Auto-generated method stub
+
+ }
+
+ /**
+ * Start listening on externals events that should be relayed by this Notifier.
+ * @see org.eclipse.papyrus.layers.runtime.notifier.AbstractDerivedViewLayerNotifier#stopListening()
+ *
+ */
+ @Override
+ protected void stopListening() {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DomainChangedEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DomainChangedEventNotifier.java
new file mode 100644
index 00000000000..c79e825a870
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DomainChangedEventNotifier.java
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.runtime.notifier;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Notify listeners when a change occurs on an domain element associated to an element of the LayerStack's diagram.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DomainChangedEventNotifier extends AbstractDerivedViewLayerNotifier {
+
+ /**
+ * {@link LayersStack} containing the {@link Diagram} on which this notifier is listening changes.
+ */
+ protected LayersStack layersStack;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param layersStack
+ */
+ public DomainChangedEventNotifier(LayersStack layersStack) {
+ this.layersStack = layersStack;
+ }
+
+ /**
+ * Start listening on externals events that should be relayed by this Notifier.
+ * @see org.eclipse.papyrus.layers.runtime.notifier.AbstractDerivedViewLayerNotifier#startListening()
+ *
+ */
+ @Override
+ protected void startListening() {
+ // TODO Auto-generated method stub
+
+ }
+
+ /**
+ * Start listening on externals events that should be relayed by this Notifier.
+ * @see org.eclipse.papyrus.layers.runtime.notifier.AbstractDerivedViewLayerNotifier#stopListening()
+ *
+ */
+ @Override
+ protected void stopListening() {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/service/LayersApplicationService.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/service/LayersApplicationService.java
new file mode 100644
index 00000000000..5095eb98ccd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/service/LayersApplicationService.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.service;
+
+import org.eclipse.papyrus.infra.core.editor.IMultiDiagramEditor;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.resource.NotFoundException;
+import org.eclipse.papyrus.infra.core.services.IService;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersApplicationService implements IService {
+
+ public static final String SERVICEID = "org.eclipse.papyrus.layers.runtime.service.LayersApplicationService";
+ /**
+ * ModelSet to retrieve models
+ */
+ protected ModelSet modelSet;
+
+ /**
+ * The synchronizer used to listen on events and to synchronize layers and notation.
+ */
+ protected LayerStackApplicationSynchronizer layersSynchronizer;
+ /**
+ * Papyrus editor instance
+ */
+ private IMultiDiagramEditor multiDiagramEditor;
+ /**
+ * associated layerModel.
+ */
+ private LayersModel layersModel;
+
+ /**
+ * The {@link NotationModel}
+ */
+ private NotationModel notationModel;
+ /**
+ * Constructor.
+ *
+ */
+ public LayersApplicationService() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.services.IService#init(org.eclipse.papyrus.infra.core.services.ServicesRegistry)
+ *
+ * @param servicesRegistry
+ * @throws ServiceException
+ */
+ @Override
+ public void init(ServicesRegistry servicesRegistry) throws ServiceException {
+ // Retrieve required services.
+ modelSet = servicesRegistry.getService(ModelSet.class);
+ multiDiagramEditor = servicesRegistry.getService(IMultiDiagramEditor.class);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.services.IService#startService()
+ *
+ * @throws ServiceException
+ */
+ @Override
+ public void startService() throws ServiceException {
+
+ // Try to get the associated model
+ try {
+ layersModel = (LayersModel)modelSet.getModelChecked(LayersModel.MODEL_ID);
+ notationModel = (NotationModel)modelSet.getModelChecked(NotationModel.MODEL_ID);
+ } catch (NotFoundException e) {
+ throw new ServiceException("Can't get layer model", e);
+ } catch (ClassCastException e) {
+ throw new ServiceException("layersModel should be of type LayersModel", e);
+ }
+
+ // Check model
+ LayersStackApplication application = layersModel.getModelRoot();
+ boolean isAlreadyExist = (application !=null);
+ if( isAlreadyExist) {
+ System.out.println("LayerApplication already exist in modelSet");
+ }
+ else {
+ System.out.println("LayerApplication do not exist in modelSet");
+ }
+
+ // Start synchronizer
+ layersSynchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+
+ }
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.services.IService#disposeService()
+ *
+ * @throws ServiceException
+ */
+ @Override
+ public void disposeService() throws ServiceException {
+
+ layersSynchronizer.dispose();
+ layersSynchronizer = null;
+ layersModel = null;
+ modelSet = null;
+ multiDiagramEditor = null;
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/utils/package-info.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/utils/package-info.java
new file mode 100644
index 00000000000..40041bddeac
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/utils/package-info.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ * @author cedric dumoulin
+ *
+ */
+package org.eclipse.papyrus.layers.runtime.utils;
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/DiagramViewEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/DiagramViewEventNotifierTest.java
new file mode 100644
index 00000000000..d0fc400f054
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/DiagramViewEventNotifierTest.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Node;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class DiagramViewEventNotifierTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+// // Create ModelSet and Model
+// ModelSet mngr = new ModelSet();
+// // LayersModel
+// LayersModel layersModel = new LayersModel();
+// mngr.registerModel(layersModel);
+// // Notation model
+// NotationModel notationModel = new NotationModel();
+// mngr.registerModel(notationModel);
+// // Do create resources
+// URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+// mngr.createModels(uri);
+//
+// modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+// modelSet.unload();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#DiagramViewEventNotifier(org.eclipse.gmf.runtime.notation.Diagram)}.
+ */
+ @Test
+ public void testDiagramViewEventNotifier() {
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ DiagramViewEventNotifier notifier = new DiagramViewEventNotifier(diagram);
+ assertNotNull("notifier created", notifier);
+
+ // dispose
+ notifier.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#dispose()}.
+ */
+ @Test
+ public void testDispose() {
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ DiagramViewEventNotifier notifier = new DiagramViewEventNotifier(diagram);
+ assertNotNull("notifier created", notifier);
+
+ // dispose
+ assertFalse("notifier is disposed", notifier.isDisposed());
+ notifier.dispose();
+ assertTrue("notifier is disposed", notifier.isDisposed());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#addEventListener(org.eclipse.papyrus.layers.runtime.IDiagramViewEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testAddEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#removeEventListener(org.eclipse.papyrus.layers.runtime.IDiagramViewEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testRemoveEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#fireDiagramViewAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireDiagramViewAddedEvent() {
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ DiagramViewEventNotifier notifier = new DiagramViewEventNotifier(diagram);
+
+ TraceDiagramViewEventListener listener = new TraceDiagramViewEventListener();
+ notifier.addEventListener(listener);
+
+ // Add view
+ Node node1 = diagram.createChild( NotationPackage.eINSTANCE.getShape() );
+
+ // Check for event
+ assertEquals("event found", "diagramViewAdded", listener.traces.get(0).name);
+
+ // Check inner creation
+ listener.traces.clear();
+ node1.createChild( NotationPackage.eINSTANCE.getShape() );
+ assertEquals("event found", "diagramViewAdded", listener.traces.get(0).name);
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireDiagramViewRemovedEvent() {
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ DiagramViewEventNotifier notifier = new DiagramViewEventNotifier(diagram);
+
+ TraceDiagramViewEventListener listener = new TraceDiagramViewEventListener();
+ notifier.addEventListener(listener);
+
+ // Add view
+ Node node1 = diagram.createChild( NotationPackage.eINSTANCE.getShape() );
+
+ // Check inner creation
+ listener.traces.clear();
+ node1.createChild( NotationPackage.eINSTANCE.getShape() );
+
+ // Check if the node is a children of the diagram
+ assertTrue("event found", diagram.getChildren().contains(node1));
+
+ // Check remove
+ listener.traces.clear();
+ diagram.removeChild(node1);
+ assertFalse("event found", diagram.getChildren().contains(node1));
+
+ assertTrue("event found", listener.traces.contains("diagramViewRemoved"));
+// assertEquals("event found", "diagramViewRemoved", listener.traces.get(0).name);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerEventTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerEventTest.java
new file mode 100644
index 00000000000..215ac77ce36
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerEventTest.java
@@ -0,0 +1,231 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackApplicationSynchronizerEventTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ // LayersModel
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Notation model
+ NotationModel notationModel = new NotationModel();
+ mngr.registerModel(notationModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ modelSet.unload();
+
+ }
+
+ /**
+ * Test the correct creation of the modelSet
+ */
+ @Test
+ public void testModelSetCreation() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ assertNotNull("NotationModel is created", notationModel);
+ // Try to create a Diagram
+ notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+ //
+ assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ assertNotNull("LayerModel is created", layersModel);
+ assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#LayerStackApplicationSynchronizer(org.eclipse.papyrus.layers.runtime.model.LayersModel, org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel)}.
+ */
+ @Test
+ public void testLayerStackApplicationSynchronizer() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("application created", synchronizer);
+
+ // dispose
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#LayerStackApplicationSynchronizer(org.eclipse.papyrus.layers.runtime.model.LayersModel, org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel)}.
+ */
+ @Test
+ public void testDispose() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("application created", synchronizer.getLayersModel());
+
+ // Try to dispose
+ synchronizer.dispose();
+ assertNull("object is disposed", synchronizer.getLayersModel());
+ }
+
+ /**
+ * Test Layer added event correctly catched
+ */
+ @Test
+ public void testLayerAddedEventListener() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+ // Create the synchronizer
+ TriggeredEventTraces traces = new TriggeredEventTraces();
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizerSubclass(layersModel, notationModel, traces);
+
+ // Add a layer Stack to the diagram
+ helper.attachLayersStack();
+
+ // Check if the appropriate method is called
+ assertEquals("event catched", "layerStackAdded", traces.get(0).name);
+ assertTrue("event catched", traces.contains("layerStackAdded"));
+
+ // dispose
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test Layer added event correctly catched
+ */
+ @Test
+ public void testLayerRemovedEventListener() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+ // Create the synchronizer
+ TriggeredEventTraces traces = new TriggeredEventTraces();
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizerSubclass(layersModel, notationModel, traces);
+
+ // Add a layer Stack to the diagram
+ helper.attachLayersStack();
+
+ traces.clear();
+ helper.removeLayersStack();
+
+ // Check if the appropriate method is called
+ assertTrue("event catched", traces.contains("layerStackRemoved"));
+
+ // dispose
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test Layer added event correctly catched
+ */
+ @Test
+ public void testDiagramRemovedEventListener() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ // Create a diagram
+ Diagram diagram1 = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram1);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helperForDiag1 = new NotationDiagramHelper(layersModel, diagram1);
+
+ // Create a diagram
+ Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram2);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helperForDiag2 = new NotationDiagramHelper(layersModel, diagram2);
+
+ // Create the synchronizer
+ TriggeredEventTraces traces = new TriggeredEventTraces();
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizerSubclass(layersModel, notationModel, traces);
+
+ // Add a layer Stack to the diagram
+ helperForDiag1.attachLayersStack();
+ helperForDiag2.attachLayersStack();
+
+ // Try to remove a diagram
+ traces.clear();
+ notationModel.getResource().getContents().remove(diagram2);
+
+
+ // Check if the appropriate method is called
+ assertTrue("event catched", traces.contains("diagramRemoved"));
+// assertEquals("number of events", 1, traces.traces.size());
+// assertEquals("diagram found in notification", diagram2, traces.traces.get(0).notifier.getOldValue());
+ assertEquals("diagram found in notification", diagram2, traces.getFirstEvent("diagramRemoved").notifier.getOldValue());
+
+ // dispose
+ synchronizer.dispose();
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerSubclass.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerSubclass.java
new file mode 100644
index 00000000000..a4953b2dddd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerSubclass.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * This class subclass the {@link LayerStackApplicationSynchronizer} in order to record
+ * the calls to the method catching the events from the superclass.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackApplicationSynchronizerSubclass extends LayerStackApplicationSynchronizer {
+
+ /**
+ * List of recorded events.
+ */
+ public TriggeredEventTraces traces ;
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ * @param notationModel
+ */
+ public LayerStackApplicationSynchronizerSubclass(LayersModel layersModel, NotationModel notationModel) {
+ super(layersModel, notationModel);
+ traces = new TriggeredEventTraces();
+ }
+
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ * @param notationModel
+ * @param traces
+ */
+ public LayerStackApplicationSynchronizerSubclass(LayersModel layersModel, NotationModel notationModel, TriggeredEventTraces traces) {
+ super(layersModel, notationModel);
+ this.traces = traces;
+ }
+
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#layerStackAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ @Override
+ public void layerStackAdded(Notification msg) {
+ traces.addTrace( "layerStackAdded", msg);
+ super.layerStackAdded(msg);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#layerStackRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ @Override
+ public void layerStackRemoved(Notification msg) {
+ traces.addTrace("layerStackRemoved", msg);
+ super.layerStackRemoved(msg);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#diagramRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ @Override
+ public void diagramRemoved(Notification msg) {
+ traces.addTrace("diagramRemoved", msg);
+ super.diagramRemoved(msg);
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerTest.java
new file mode 100644
index 00000000000..85e0c4164c3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerTest.java
@@ -0,0 +1,330 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Tests for the {@link LayerStackApplicationSynchronizer} class.
+ * This tests do not tests event received when models are modified.
+ * This tests tests method behavior when they are called directly.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackApplicationSynchronizerTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ // LayersModel
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Notation model
+ NotationModel notationModel = new NotationModel();
+ mngr.registerModel(notationModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ modelSet.unload();
+
+ }
+
+ /**
+ * Test the correct creation of the modelSet
+ */
+ @Test
+ public void testModelSetCreation() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ assertNotNull("NotationModel is created", notationModel);
+ // Try to create a Diagram
+ notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+ //
+ assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ assertNotNull("LayerModel is created", layersModel);
+ assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+ }
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#LayerStackApplicationSynchronizer(org.eclipse.papyrus.layers.runtime.model.LayersModel, org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel)}.
+ */
+ @Test
+ public void testLayerStackApplicationSynchronizer() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("application created", synchronizer);
+
+ // dispose
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#getLayersModel()}.
+ */
+ @Test
+ public void testGetLayersModel() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("layers model exist", synchronizer.getLayersModel());
+ assertSame("right layer model", layersModel, synchronizer.getLayersModel());
+
+ // dispose
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#getNotationModel()}.
+ */
+ @Test
+ public void testGetNotationModel() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("layers model exist", synchronizer.getNotationModel());
+ assertSame("right layer model", notationModel, synchronizer.getNotationModel());
+
+ // dispose
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#dispose()}.
+ */
+ @Test
+ public void testDispose() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("application created", synchronizer.getLayersModel());
+
+ // Try to dispose
+ assertFalse("object is disposed", synchronizer.isDisposed());
+ synchronizer.dispose();
+ assertTrue("object is disposed", synchronizer.isDisposed());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#layerStackAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testLayerStackAdded() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ // Init models
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("application created", synchronizer);
+
+ // add a LayerStack to models
+ // in result, the method should be called
+ helper.attachLayersStack();
+
+ // Check if the appropriate LayerStackSynchronizer is created
+ assertNotNull( "LayerStackSynchronizer added", synchronizer.getSynchronizers().get(diagram));
+
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#layerStackRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testLayerStackRemoved() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ // Init models
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("application created", synchronizer);
+
+ // add a LayerStack to models
+ // in result, the method should be called
+ helper.attachLayersStack();
+
+ // Check if the appropriate LayerStackSynchronizer is created
+ assertNotNull( "LayerStackSynchronizer added", synchronizer.getSynchronizers().get(diagram));
+
+ // Remove layer
+ helper.removeLayersStack();
+
+ assertNull( "LayerStackSynchronizer removed", synchronizer.getSynchronizers().get(diagram));
+
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#diagramRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testDiagramRemoved() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ // Init models
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("application created", synchronizer);
+
+ // add a LayerStack to models
+ // in result, the method should be called
+ helper.attachLayersStack();
+
+ // Check if the appropriate LayerStackSynchronizer is created
+ assertNotNull( "LayerStackSynchronizer added", synchronizer.getSynchronizers().get(diagram));
+
+ // Remove diagram
+ notationModel.getResource().getContents().remove(diagram);
+
+ assertNull( "LayerStackSynchronizer removed", synchronizer.getSynchronizers().get(diagram));
+
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test {@link LayerStackApplicationSynchronizer} start when an application object
+ * with LayerStack already exist in the LayerModel.
+ * Test if synchronizer are restarted for already existing Stacks.
+ *
+ */
+ @Test
+ public void testLayerStackApplicationSynchronizerRestartSynchronizer() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ // Init models
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+
+ // create a stack: this also create the application object in model.
+ helper.attachLayersStack();
+
+ // create synchronizer
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("application created", synchronizer);
+
+
+ // Check if the appropriate LayerStackSynchronizer is created
+ assertNotNull( "LayerStackSynchronizer created", synchronizer.getSynchronizers().get(diagram));
+
+ // Check if we can add new LayerStack
+ Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram2);
+ NotationDiagramHelper helper2 = new NotationDiagramHelper(layersModel, diagram2);
+ helper2.attachLayersStack();
+
+ // Check if the appropriate LayerStackSynchronizer is created
+ assertNotNull( "LayerStackSynchronizer created", synchronizer.getSynchronizers().get(diagram2));
+
+
+ synchronizer.dispose();
+ }
+
+ /**
+ * Test {@link LayerStackApplicationSynchronizer} start when NO application object
+ * exist in the LayerModel.
+ * Test if synchronizer is correctly started and accept new stack attachment.
+ *
+ */
+ @Test
+ public void testLayerStackApplicationSynchronizerStartWithNoApplicationInModel() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ // create synchronizer
+ LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+ assertNotNull("application created", synchronizer);
+ // Here, the synchronizer should have not create an application !
+ assertNull( "Application is not created in model", layersModel.lookupLayerStackApplication() );
+
+ // Create a stack: first the diagram, then an helper, then the stack
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+ // create a stack: this also create the application object in model.
+ helper.attachLayersStack();
+
+ // Check if the appropriate LayerStackSynchronizer is created
+ assertNotNull( "LayerStackSynchronizer created", synchronizer.getSynchronizers().get(diagram));
+ // Here, the application should be created (by the stack creation)
+ assertNotNull( "Application is created in model", layersModel.lookupLayerStackApplication() );
+
+
+ synchronizer.dispose();
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerSubclass.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerSubclass.java
new file mode 100644
index 00000000000..3f68b7e1aff
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerSubclass.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * A subclass registering events
+ * For tests purpose.
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackSynchronizerSubclass extends LayerStackSynchronizer {
+
+ /**
+ * List of recorded events.
+ */
+ public TriggeredEventTraces traces ;
+
+ /**
+ * Constructor.
+ *
+ * @param layersStack
+ */
+ public LayerStackSynchronizerSubclass(LayersStack layersStack) {
+ super(layersStack);
+ traces = new TriggeredEventTraces();
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void propertyValueAdded(Notification notification) {
+ traces.addTrace( "propertyValueAdded", notification);
+ super.propertyValueAdded(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void propertyValueRemoved(Notification notification) {
+ traces.addTrace( "propertyValueRemoved", notification);
+ super.propertyValueRemoved(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueChanged(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void propertyValueChanged(Notification notification) {
+ traces.addTrace( "propertyValueChanged", notification);
+ super.propertyValueChanged(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerAdded(Notification notification) {
+ traces.addTrace( "layerAdded", notification);
+ super.layerAdded(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerRemoved(Notification notification) {
+ traces.addTrace( "layerRemoved", notification);
+ super.layerRemoved(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerMoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerMoved(Notification notification) {
+ traces.addTrace( "layerMoved", notification);
+ super.layerMoved(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerSet(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerSet(Notification notification) {
+ traces.addTrace( "layerSet", notification);
+ super.layerSet(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void viewAddedToLayer(Notification notification) {
+ traces.addTrace( "viewAddedToLayer", notification);
+ super.viewAddedToLayer(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void viewRemovedFromLayer(Notification notification) {
+ traces.addTrace( "viewRemovedFromLayer", notification);
+ super.viewRemovedFromLayer(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void viewMovedBetweenLayer(Notification notification) {
+ traces.addTrace( "viewMovedBetweenLayer", notification);
+ super.viewMovedBetweenLayer(notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ @Override
+ public void diagramViewAdded(Notification msg) {
+ traces.addTrace( "diagramViewAdded", msg);
+ super.diagramViewAdded(msg);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ @Override
+ public void diagramViewRemoved(Notification msg) {
+ traces.addTrace( "diagramViewRemoved", msg);
+ super.diagramViewRemoved(msg);
+ }
+
+ @Override
+ public void multiViewsAddedToLayer(Notification notification) {
+ traces.addTrace( "multiViewsAddedToLayer", notification);
+ super.multiViewsAddedToLayer(notification);
+ }
+
+ @Override
+ public void multiViewsRemovedFromLayer(Notification notification) {
+ traces.addTrace( "multiViewsRemovedFromLayer", notification);
+ super.multiViewsRemovedFromLayer(notification);
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerTest.java
new file mode 100644
index 00000000000..32e6c09cf29
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerTest.java
@@ -0,0 +1,254 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.fail;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayerStackSynchronizerTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+// // Create ModelSet and Model
+// ModelSet mngr = new ModelSet();
+// // LayersModel
+// LayersModel layersModel = new LayersModel();
+// mngr.registerModel(layersModel);
+// // Notation model
+// NotationModel notationModel = new NotationModel();
+// mngr.registerModel(notationModel);
+// // Do create resources
+// URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+// mngr.createModels(uri);
+//
+// modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+// modelSet.unload();
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#LayerStackSynchronizer(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)}.
+ */
+ @Test
+ public void testLayerStackSynchronizer() {
+ // Create a fake structure
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ LayersStack stack = LayersFactory.eINSTANCE.createLayersStack();
+ stack.setDiagram(diagram);
+
+
+ // Create the stack
+ LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+ // Check creation
+ assertNotNull("object created", synchronizer);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#getDiagram()}.
+ */
+ @Test
+ public void testGetDiagram() {
+ // Create a fake structure
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ LayersStack stack = LayersFactory.eINSTANCE.createLayersStack();
+ stack.setDiagram(diagram);
+
+
+ // Create the stack
+ LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+ // Check creation
+ assertNotNull("getDiagram", synchronizer.getDiagram());
+ assertSame("getDiagram", diagram, synchronizer.getDiagram());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#getLayersStack()}.
+ */
+ @Test
+ public void testGetLayersStack() {
+ // Create a fake structure
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ LayersStack stack = LayersFactory.eINSTANCE.createLayersStack();
+ stack.setDiagram(diagram);
+
+
+ // Create the stack
+ LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+ // Check creation
+ assertNotNull("getLayersStack", synchronizer.getLayersStack());
+ assertSame("getLayersStack", stack, synchronizer.getLayersStack());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#dispose()}.
+ */
+ @Test
+ @Ignore
+ public void testDispose() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#isDisposed()}.
+ */
+ @Test
+ @Ignore
+ public void testIsDisposed() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testPropertyValueAdded() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testPropertyValueRemoved() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueChanged(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testPropertyValueChanged() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testLayerAdded() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testLayerRemoved() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerMoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testLayerMoved() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerSet(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testLayerSet() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testViewAddedToLayer() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testViewRemovedFromLayer() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testViewMovedBetweenLayer() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testDiagramViewAdded() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testDiagramViewRemoved() {
+ fail("Not yet implemented");
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerWithApplicationTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerWithApplicationTest.java
new file mode 100644
index 00000000000..cd1e9519fcb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerWithApplicationTest.java
@@ -0,0 +1,685 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces.TriggeredEvent;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * Test the {@link LayerStackSynchronizer} by initializing it from the {@link LayersStackApplication}
+ * class.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackSynchronizerWithApplicationTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+// // Create ModelSet and Model
+// ModelSet mngr = new ModelSet();
+// // LayersModel
+// LayersModel layersModel = new LayersModel();
+// mngr.registerModel(layersModel);
+// // Notation model
+// NotationModel notationModel = new NotationModel();
+// mngr.registerModel(notationModel);
+// // Do create resources
+// URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+// mngr.createModels(uri);
+//
+// modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+// modelSet.unload();
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#LayerStackSynchronizer(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testLayerStackSynchronizer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create synchronizer
+ LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+ // Check creation
+ assertNotNull("object created", synchronizer);
+
+ // Create a TopLayer
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layer.setApplication(application);
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+ View view4 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+ Property property4 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view3), Arrays.asList(property3));
+
+
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#getDiagram()}.
+ */
+ @Test
+ public void testGetDiagram() {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create synchronizer
+ LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+
+ // Check creation
+ assertNotNull("getDiagram", synchronizer.getDiagram());
+ assertSame("getDiagram", diagram, synchronizer.getDiagram());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#getLayersStack()}.
+ */
+ @Test
+ public void testGetLayersStack() {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create synchronizer
+ LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+
+ // Check creation
+ assertNotNull("getLayersStack", synchronizer.getLayersStack());
+ assertSame("getLayersStack", stack, synchronizer.getLayersStack());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#dispose()}.
+ */
+ @Test
+ @Ignore
+ public void testDispose() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#isDisposed()}.
+ */
+ @Test
+ @Ignore
+ public void testIsDisposed() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueAdded(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testPropertyValueAdded() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create a TopLayer
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layer.setApplication(application);
+ stack.setLayers(layer);
+
+ // Create synchronizer
+ LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+ TriggeredEventTraces traces = synchronizer.traces;
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Checks
+ traces.clear();
+ // add a property
+ layer1.addPropertyInstance(property2);
+
+ assertTrue("event sent", traces.size()>0);
+ assertSame("event sent", "propertyValueAdded", traces.get(0).name);
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueRemoved(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testPropertyValueRemoved() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create a TopLayer
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layer.setApplication(application);
+ stack.setLayers(layer);
+
+ // Create synchronizer
+ LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+ TriggeredEventTraces traces = synchronizer.traces;
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1, property2));
+
+ // Checks
+ traces.clear();
+ // remove a property
+ layer1.removePropertyInstance(property2);
+
+ assertTrue("event sent", traces.size()>0);
+ assertSame("event sent", "propertyValueRemoved", traces.get(0).name);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueChanged(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testPropertyValueChanged() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create a TopLayer
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layer.setApplication(application);
+ stack.setLayers(layer);
+
+ // Create synchronizer
+ LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+ TriggeredEventTraces traces = synchronizer.traces;
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1, property2));
+
+ // Checks
+ traces.clear();
+ // change a property value
+ TypeInstance value = layer1.getPropertyInstance(property1);
+ // Check the type of the instance
+ // We don't know the type as it is set externally in the Property registry.
+ if( value instanceof StringInstance) {
+ assertTrue("value is instance of String", value instanceof StringInstance);
+ StringInstance stringValue = (StringInstance)value;
+ stringValue.setValue("newValue");
+ }
+ else if( value instanceof BooleanInstance) {
+ BooleanInstance realValue = (BooleanInstance)value;
+ realValue.setValue(true);
+ }
+
+ // What for ?
+ layer1.removePropertyInstance(property2);
+
+ assertTrue("event sent", traces.size()>0);
+ assertSame("event sent", "propertyValueChanged", traces.get(0).name);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testLayerAdded() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testLayerRemoved() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerMoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testLayerMoved() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerSet(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testLayerSet() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testViewAddedToLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create a TopLayer
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layer.setApplication(application);
+ stack.setLayers(layer);
+
+ // Create synchronizer
+ LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+ TriggeredEventTraces traces = synchronizer.traces;
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // action
+ traces.clear();
+ // remove a view
+ layer1.getViews().add(view2);
+
+ // assert
+ assertTrue("event sent", traces.size()>0);
+ TriggeredEvent event = traces.get(0);
+ assertSame("event sent", "viewAddedToLayer", event.name);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testNViewAddedToLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create a TopLayer
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layer.setApplication(application);
+ stack.setLayers(layer);
+
+ // Create synchronizer
+ LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+ TriggeredEventTraces traces = synchronizer.traces;
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+
+ List<View> viewsToAttach = Arrays.asList(view1);
+ List<View> viewsToAdd = Arrays.asList(view2, view3);
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, viewsToAttach, Arrays.asList(property1));
+
+ // action
+ traces.clear();
+ // remove a view
+ layer1.getViews().addAll(viewsToAdd );
+
+ // assert
+ assertTrue("event sent", traces.size()>0);
+ TriggeredEvent event = traces.get(0);
+ assertSame("event sent", "multiViewsAddedToLayer", event.name);
+
+ // Check the collection
+ Notification notification = event.notifier;
+ assertNotNull("notification is set", notification);
+
+ List<View> addedViews = LayersModelEventUtils.ViewEvents.getViewsAdded(notification);
+ assertEquals( "both removed list have the same size", viewsToAdd.size(), addedViews.size());
+ assertTrue( "notification contains removed views", addedViews.containsAll(viewsToAdd));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testViewRemovedFromLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create a TopLayer
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layer.setApplication(application);
+ stack.setLayers(layer);
+
+ // Create synchronizer
+ LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+ TriggeredEventTraces traces = synchronizer.traces;
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1, view2), Arrays.asList(property1));
+
+ // action
+ traces.clear();
+ // remove a view
+ layer1.getViews().remove(view2);
+
+ // assert
+ assertTrue("event sent", traces.size()>0);
+ TriggeredEvent event = traces.get(0);
+ assertSame("event sent", "viewRemovedFromLayer", event.name);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testNViewRemovedFromLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create a TopLayer
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layer.setApplication(application);
+ stack.setLayers(layer);
+
+ // Create synchronizer
+ LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+ TriggeredEventTraces traces = synchronizer.traces;
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+
+ List<View> viewsToAttach = Arrays.asList(view1, view2, view3);
+ List<View> viewsToRemove = Arrays.asList(view2, view3);
+
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, viewsToAttach, Arrays.asList(property1));
+
+ // action
+ traces.clear();
+ // remove a view
+ layer1.getViews().removeAll(viewsToRemove);
+
+ // assert
+ assertTrue("event sent", traces.size()>0);
+ TriggeredEvent event = traces.get(0);
+ assertSame("event sent", "multiViewsRemovedFromLayer", event.name);
+ // Check the collection
+ Notification notification = event.notifier;
+ assertNotNull("notification is set", notification);
+
+ List<View> removedViews = LayersModelEventUtils.ViewEvents.getViewsRemoved(notification);
+ assertEquals( "both removed list have the same size", removedViews.size(), viewsToRemove.size());
+ assertTrue( "notification contains removed views", removedViews.containsAll(viewsToRemove));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testViewMovedBetweenLayer() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testDiagramViewAdded() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testDiagramViewRemoved() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Create a layer with the specified view and property set
+ *
+ * @param asList
+ * @param asList2
+ * @return
+ * @throws LayersException
+ */
+ protected Layer createLayer(LayerOperator parent, List<View> views, List<Property> properties) throws LayersException {
+
+ // Create the layer
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ // Set the application (needed ?)
+ layer.setApplication(parent.getApplication());
+ // Attach it to its parent
+ parent.getLayers().add(layer);
+
+
+ // Add views
+ for( View view : views) {
+ layer.getViews().add(view);
+ }
+
+ // Add property instances
+ for(Property property : properties) {
+ layer.addPropertyInstance(property);
+ }
+ return layer;
+ }
+
+ /**
+ * Test method for {@link #createLayer(List, List)}
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayer() throws LayersException {
+
+ // Create requested objects
+ TopLayerOperator layerParent = LayersFactory.eINSTANCE.createTopLayerOperator();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layerParent.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer = createLayer( layerParent, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Checks
+ assertNotNull("layer created", layer);
+ assertSame("views added", 2, layer.getViews().size());
+
+ assertSame("property instance added", 2, layer.getPropertyValueMap().values().size());
+ assertSame("property instance is correctly set", layer.getPropertyValueMap().get(property1.getName()), layer.getPropertyInstance(property1));
+ assertSame("property instance is correctly set", layer.getPropertyValueMap().get(property2.getName()), layer.getPropertyInstance(property2));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifierTest.java
new file mode 100644
index 00000000000..ef34d3970b5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifierTest.java
@@ -0,0 +1,589 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersModelEventNotifierTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#LayersModelEventNotifier(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)}.
+ */
+ @Test
+ public void testLayersModelEventNotifier() {
+
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+// // Add a trace listener
+// ILayersModelEventListener listener = new TraceLayersModelEventListener();
+// notifier.addLayersModelEventListener(listener);
+
+ // Check creation
+ assertNotNull("notifier created", notifier);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#activate()}.
+ */
+ @Test
+ @Ignore
+ public void testActivate() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#deactivate()}.
+ */
+ @Test
+ @Ignore
+ public void testDeactivate() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#dispose()}.
+ */
+ @Test
+ public void testDispose() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // dispose notifier
+ assertFalse("notifier disposed", notifier.isDisposed());
+ notifier.dispose();
+ assertTrue("notifier disposed", notifier.isDisposed());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#addLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersModelEventListener)}.
+ */
+ @Test
+ public void testAddLayersModelEventListener() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ ILayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ // Check creation
+ assertNotNull("notifier created", notifier);
+ assertTrue( "listener added to internal list", notifier.listeners.contains(listener) );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#removeLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersModelEventListener)}.
+ */
+ @Test
+ public void testRemoveLayersModelEventListener() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ ILayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+ assertTrue( "listener added to internal list", notifier.listeners.contains(listener) );
+
+ // Remove the listener
+ notifier.removeLayersModelEventListener(listener);
+ assertFalse( "listener removed from internal list", notifier.listeners.contains(listener) );
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#firePropertyValueAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testFirePropertyValueAddedEvent() throws LayersException {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ System.err.println("setLayers(layerOp1)");
+ layersStack.setLayers(layerOp1);
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ System.err.println("layerOp1.getLayers().add(layer1)");
+ layerOp1.getLayers().add(layer1);
+
+ // Add an instance to layer1
+ traces.traces.clear();
+ Property isSunday = PropertyUtils.getInstance().createProperty("isSunday", LayersPackage.eINSTANCE.getBooleanType());
+ layer1.addPropertyInstance(isSunday);
+ // Check events
+ assertEquals("one event recorded", "propertyValueAdded", traces.traces.get(0).name );
+ assertTrue("event recorded", traces.contains("propertyValueAdded"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#firePropertyValueRemoved(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testFirePropertyValueRemoved() throws LayersException {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ System.err.println("setLayers(layerOp1)");
+ layersStack.setLayers(layerOp1);
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ System.err.println("layerOp1.getLayers().add(layer1)");
+ layerOp1.getLayers().add(layer1);
+
+ // Add an instance to layer1
+ String propertyName = "isSunday";
+ Property isSunday = PropertyUtils.getInstance().createProperty(propertyName, LayersPackage.eINSTANCE.getBooleanType());
+ layer1.addPropertyInstance(isSunday);
+
+ // Remove the instance
+ traces.traces.clear();
+ layer1.removePropertyInstance(isSunday);
+
+ // Check events
+ assertEquals("one event recorded", "propertyValueRemoved", traces.traces.get(0).name );
+ assertTrue("event recorded", traces.contains("propertyValueRemoved"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#firePropertyValueChanged(org.eclipse.emf.common.notify.Notification)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testFirePropertyValueChanged() throws LayersException {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // create layer op
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // Add an instance to layer1
+ String propertyName = "isSunday";
+ Property isSunday = PropertyUtils.getInstance().createProperty(propertyName, LayersPackage.eINSTANCE.getBooleanType());
+ BooleanInstance isSundayInstance = (BooleanInstance)layer1.addPropertyInstance(isSunday);
+
+ // Change the value of the instance
+ traces.traces.clear();
+ isSundayInstance.setValue(true);
+
+ // Check events
+ assertEquals("one event recorded", "propertyValueChanged", traces.traces.get(0).name );
+ assertTrue("event recorded", traces.contains("propertyValueChanged"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayerAdded() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ System.err.println("setLayers(layerOp1)");
+ layersStack.setLayers(layerOp1);
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ System.err.println("layerOp1.getLayers().add(layer1)");
+ layerOp1.getLayers().add(layer1);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerAdded"));
+ assertEquals("one event recorded", 2, traces.traces.size() );
+ assertEquals("one event recorded", "layerAdded", traces.traces.get(1).name );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayerRemoved() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // Remove layer
+ traces.clear();
+ layerOp1.getLayers().remove(layer1);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerRemoved"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerRemoved", traces.traces.get(0).name );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayerSetForRootLayer() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer as root
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // Remove root layer
+ traces.clear();
+ layersStack.setLayers(null);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+ // Note that no event is sent for the nested layer
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireEventWhenRootLayerIsReplaced() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer as root
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // replace root layer
+ traces.clear();
+ Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+ layersStack.setLayers(layer2);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireEventWhenLayerIsReplaced() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer as root
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // replace root layer
+ traces.clear();
+ Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().set(0, layer2);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerMoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayerMoved() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // Add a layer
+ Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer2);
+
+ // move layer
+ // EMF list are EList, which contains a move operation
+ traces.clear();
+ EList<LayerExpression> list = (EList<LayerExpression>)layerOp1.getLayers();
+ list.move(0, layer2);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerMoved"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerMoved", traces.traces.get(0).name );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireViewAddedToLayer(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireViewAddedToLayer() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // Add a layer
+ Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer2);
+
+ // add a view to layer1
+ traces.clear();
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ layer1.getViews().add(view1);
+
+ // Check events
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "viewAddedToLayer", traces.traces.get(0).name );
+ assertTrue("event recorded", traces.contains("viewAddedToLayer"));
+
+ // add a view to layer2
+ traces.clear();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ layer2.getViews().add(view2);
+
+ // Check events
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "viewAddedToLayer", traces.traces.get(0).name );
+ assertTrue("event recorded", traces.contains("viewAddedToLayer"));
+
+ // Use the same view 2 times
+ traces.clear();
+ layer2.getViews().add(view1);
+ // Check events
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "viewAddedToLayer", traces.traces.get(0).name );
+ assertTrue("event recorded", traces.contains("viewAddedToLayer"));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireViewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireViewRemovedFromLayer() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // Add a layer
+ Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer2);
+
+ // add a view to layer1
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ layer1.getViews().add(view1);
+
+ // Remove the view
+ traces.clear();
+ layer1.getViews().remove(view1);
+
+ // Check events
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "viewRemovedFromLayer", traces.traces.get(0).name );
+ assertTrue("event recorded", traces.contains("viewRemovedFromLayer"));
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireViewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ @Ignore
+ public void testFireViewMovedBetweenLayer() {
+ fail("Not yet implemented");
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifierTest.java
new file mode 100644
index 00000000000..83a69002141
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifierTest.java
@@ -0,0 +1,232 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersStackAndApplicationLifeCycleEventNotifierTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ // LayersModel
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Notation model
+ NotationModel notationModel = new NotationModel();
+ mngr.registerModel(notationModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ modelSet.unload();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#LayersStackAndApplicationLifeCycleEventNotifier(org.eclipse.papyrus.layers.runtime.model.LayersModel)}.
+ */
+ @Test
+ public void testLayersStackAndApplicationLifeCycleEventNotifier() {
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayersStackAndApplicationLifeCycleEventNotifier notifier = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+ assertNotNull("application created", notifier);
+
+ // dispose
+ notifier.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#dispose()}.
+ */
+ @Test
+ public void testDispose() {
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayersStackAndApplicationLifeCycleEventNotifier synchronizer = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+ assertFalse("application created", synchronizer.isDisposed());
+
+ // Try to dispose
+ synchronizer.dispose();
+ assertTrue("object is disposed", synchronizer.isDisposed());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#isDisposed()}.
+ */
+ @Test
+ public void testIsDisposed() {
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayersStackAndApplicationLifeCycleEventNotifier synchronizer = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+ assertFalse("application created", synchronizer.isDisposed());
+
+ // Try to dispose
+ synchronizer.dispose();
+ assertTrue("object is disposed", synchronizer.isDisposed());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#addLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testAddLayersModelEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#removeLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testRemoveLayersModelEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#addLayersStackApplicationLifeCycleEventListener(org.eclipse.papyrus.layers.runtime.model.ILayersModelRootEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testAddLayersStackApplicationLifeCycleEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#removeLayersStackApplicationLifeCycleEventListener(org.eclipse.papyrus.layers.runtime.model.ILayersModelRootEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testRemoveLayersStackApplicationLifeCycleEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test the correct creation of the modelSet
+ */
+ @Test
+ public void testModelSetCreation() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ assertNotNull("NotationModel is created", notationModel);
+ // Try to create a Diagram
+ notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+ //
+ assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ assertNotNull("LayerModel is created", layersModel);
+ assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+ }
+
+ /**
+ * Test Layer added event correctly catched
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#layerStackAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testLayerStackAdded() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+ // Create the notifier
+ TraceLayersStackApplicationEventListener traces = new TraceLayersStackApplicationEventListener();
+ LayersStackAndApplicationLifeCycleEventNotifier notifier = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+ notifier.addLayersModelEventListener(traces);
+
+ // Add a layer Stack to the diagram
+ helper.attachLayersStack();
+
+ // Check if the appropriate method is called
+ assertTrue("event catched", traces.traces.contains("layerStackAdded"));
+
+ // dispose
+ notifier.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#layerStackRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testLayerStackRemoved() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+ // Create the notifier
+ TraceLayersStackApplicationEventListener traces = new TraceLayersStackApplicationEventListener();
+ LayersStackAndApplicationLifeCycleEventNotifier notifier = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+ notifier.addLayersModelEventListener(traces);
+
+ // Add a layer Stack to the diagram
+ helper.attachLayersStack();
+
+ traces.traces.clear();
+ helper.removeLayersStack();
+
+ // Check if the appropriate method is called
+ assertTrue("event catched", traces.traces.contains("layerStackRemoved"));
+
+ // dispose
+ notifier.dispose();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifierTest.java
new file mode 100644
index 00000000000..a78aa430286
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifierTest.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersStackApplicationEventNotifierTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ // LayersModel
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Notation model
+ NotationModel notationModel = new NotationModel();
+ mngr.registerModel(notationModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ modelSet.unload();
+ }
+
+ /**
+ * Test the correct creation of the modelSet
+ */
+ @Test
+ public void testModelSetCreation() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ assertNotNull("NotationModel is created", notationModel);
+ // Try to create a Diagram
+ notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+ //
+ assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ assertNotNull("LayerModel is created", layersModel);
+ assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#LayersStackApplicationEventNotifier(org.eclipse.papyrus.layers.runtime.model.LayersModel)}.
+ */
+ @Test
+ public void testLayersStackApplicationEventNotifier() {
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayersStackApplicationEventNotifier notifier = new LayersStackApplicationEventNotifier(layersModel);
+ assertNotNull("application created", notifier);
+
+ // dispose
+ notifier.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#dispose()}.
+ */
+ @Test
+ public void testDispose() {
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ LayersStackApplicationEventNotifier synchronizer = new LayersStackApplicationEventNotifier(layersModel);
+ assertFalse("application created", synchronizer.isDisposed());
+
+ // Try to dispose
+ synchronizer.dispose();
+ assertTrue("object is disposed", synchronizer.isDisposed());
+ }
+
+ /**
+ * Test Layer added event correctly catched
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#layerStackAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testLayerStackAdded() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+ // Create the notifier
+ TraceLayersStackApplicationEventListener traces = new TraceLayersStackApplicationEventListener();
+ LayersStackApplicationEventNotifier notifier = new LayersStackApplicationEventNotifier(layersModel);
+ notifier.addLayersModelEventListener(traces);
+
+ // Add a layer Stack to the diagram
+ helper.attachLayersStack();
+
+ // Check if the appropriate method is called
+ assertTrue("event catched", traces.traces.contains("layerStackAdded"));
+
+ // dispose
+ notifier.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#layerStackRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testLayerStackRemoved() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+ // Create the notifier
+ TraceLayersStackApplicationEventListener traces = new TraceLayersStackApplicationEventListener();
+ LayersStackApplicationEventNotifier notifier = new LayersStackApplicationEventNotifier(layersModel);
+ notifier.addLayersModelEventListener(traces);
+
+ // Add a layer Stack to the diagram
+ helper.attachLayersStack();
+
+ traces.traces.clear();
+ helper.removeLayersStack();
+
+ // Check if the appropriate method is called
+ assertTrue("event catched", traces.traces.contains("layerStackRemoved"));
+
+ // dispose
+ notifier.dispose();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramMngrTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramMngrTest.java
new file mode 100644
index 00000000000..a26f8e36d0e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramMngrTest.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class NotationDiagramMngrTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ modelSet.unload();
+
+ }
+
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#NotationDiagramMngr(org.eclipse.gmf.runtime.notation.Diagram)}.
+ */
+ @Test
+ public void testNotationDiagramHelper() {
+
+ // Create a Diagram
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Get LayersModel
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ // Check creation
+ NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+ assertNotNull("ManagerCreated", diagramHelper);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#dispose()}.
+ */
+ @Test
+ public void testDispose() {
+ // Create a Diagram
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Get LayersModel
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+
+ // Create mngr
+ NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+
+ // Do dispose
+ diagramHelper.dispose();
+ // Check disposal
+ assertNull( "disposed", diagramHelper.getDiagram());
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#getDiagram()}.
+ */
+ @Test
+ public void testGetDiagram() {
+ // Create a Diagram
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Get LayersModel
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+
+ // Create mngr
+ NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+
+ // check
+ assertNotNull("getDiagram", diagramHelper.getDiagram());
+ assertSame("getDiagram", diagram, diagramHelper.getDiagram());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#attachLayerStack()}.
+ */
+ @Test
+ public void testAttachLayerStack() {
+ // Create a Diagram
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Get LayersModel
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+
+ // Create mngr
+ NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+
+ diagramHelper.attachLayersStack();
+
+ assertTrue("LayerStack is attached to diagram", diagramHelper.isLayersStackAttached() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#removeLayerStack()}.
+ */
+ @Test
+ public void testRemoveLayerStack() {
+ // Create a Diagram
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Get LayersModel
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+
+ // Create mngr
+ NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+
+ diagramHelper.attachLayersStack();
+ assertTrue("LayerStack is attached to diagram", diagramHelper.isLayersStackAttached() );
+
+ // Try to remove LayerStack
+ diagramHelper.removeLayersStack();
+ assertFalse("LayerStack is detached from diagram", diagramHelper.isLayersStackAttached() );
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#isLayerStackAttached()}.
+ */
+ @Test
+ public void testIsLayerStackAttached() {
+ // Create a Diagram
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Get LayersModel
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+
+ // Create mngr
+ NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifierTest.java
new file mode 100644
index 00000000000..a3a51ee62ff
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifierTest.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class NotationDiagramRemovedFromResourceEventNotifierTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ // LayersModel
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Notation model
+ NotationModel notationModel = new NotationModel();
+ mngr.registerModel(notationModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ modelSet.unload();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#NotationDiagramRemovedFromResourceEventNotifier(org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel)}.
+ */
+ @Test
+ public void testNotationDiagramRemovedFromResourceEventNotifier() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+
+ NotationDiagramRemovedFromResourceEventNotifier notifier = new NotationDiagramRemovedFromResourceEventNotifier(notationModel);
+ assertNotNull("application created", notifier);
+
+ // dispose
+ notifier.dispose();
+ }
+
+ /**
+ * Test the correct creation of the modelSet
+ */
+ @Test
+ public void testModelSetCreation() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ assertNotNull("NotationModel is created", notationModel);
+ // Try to create a Diagram
+ notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+ //
+ assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ assertNotNull("LayerModel is created", layersModel);
+ assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#dispose()}.
+ */
+ @Test
+ public void testDispose() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+
+ NotationDiagramRemovedFromResourceEventNotifier notifier = new NotationDiagramRemovedFromResourceEventNotifier(notationModel);
+ assertFalse("application created", notifier.isDisposed());
+
+ // Try to dispose
+ notifier.dispose();
+ assertTrue("object is disposed", notifier.isDisposed());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#addLayersModelEventListener(org.eclipse.papyrus.layers.runtime.INotationDiagramRemovedEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testAddLayersModelEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#removeLayersModelEventListener(org.eclipse.papyrus.layers.runtime.INotationDiagramRemovedEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testRemoveLayersModelEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#fireDiagramRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireDiagramRemovedEvent() {
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+
+ // Create a diagram
+ Diagram diagram1 = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram1);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helperForDiag1 = new NotationDiagramHelper(layersModel, diagram1);
+
+ // Create a diagram
+ Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+ notationModel.addDiagram(diagram2);
+ // Create a helper used to attach a LayerStack to diagram.
+ NotationDiagramHelper helperForDiag2 = new NotationDiagramHelper(layersModel, diagram2);
+
+ // Create the synchronizer
+ NotationDiagramRemovedFromResourceEventNotifier notifier = new NotationDiagramRemovedFromResourceEventNotifier(notationModel);
+ TraceNotationDiagramRemovedFromResourceEventListener traces = new TraceNotationDiagramRemovedFromResourceEventListener();
+ notifier.addLayersModelEventListener(traces);
+
+ // Add a layer Stack to the diagram
+ helperForDiag1.attachLayersStack();
+ helperForDiag2.attachLayersStack();
+
+ // Try to remove a diagram
+ traces.traces.clear();
+ notationModel.getResource().getContents().remove(diagram2);
+
+
+ // Check if the appropriate method is called
+ assertTrue("event catched", traces.traces.contains("diagramRemoved"));
+ assertEquals("number of events", 1, traces.traces.size());
+ assertEquals("diagram found in notification", diagram2, traces.traces.get(0).notifier.getOldValue());
+
+ // dispose
+ notifier.dispose();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceDiagramViewEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceDiagramViewEventListener.java
new file mode 100644
index 00000000000..ba03465eb7c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceDiagramViewEventListener.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener;
+
+
+/**
+ * A listener on {@link LayersStackApplicationEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceDiagramViewEventListener implements IDiagramViewEventListener {
+
+ public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+
+ @Override
+ public void diagramViewAdded(Notification msg) {
+ traces.addTrace("diagramViewAdded", msg);
+
+ }
+
+ @Override
+ public void diagramViewRemoved(Notification msg) {
+ traces.addTrace("diagramViewRemoved", msg);
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersModelEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersModelEventListener.java
new file mode 100644
index 00000000000..f5d6a2b61c2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersModelEventListener.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceLayersModelEventListener implements ILayersModelEventListener {
+
+ public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#propertyValueAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void propertyValueAdded(Notification notification) {
+ traces.addTrace("propertyValueAdded", notification);
+
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#propertyValueRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void propertyValueRemoved(Notification notification) {
+ traces.addTrace("propertyValueRemoved", notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#propertyValueChanged(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void propertyValueChanged(Notification notification) {
+ traces.addTrace("propertyValueChanged", notification);
+ }
+
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerSet(Notification notification) {
+ traces.addTrace("layerSet", notification);
+
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerAdded(Notification notification) {
+ traces.addTrace("layerAdded", notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerRemoved(Notification notification) {
+ traces.addTrace("layerRemoved", notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerMoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerMoved(Notification notification) {
+ traces.addTrace("layerMoved", notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void viewAddedToLayer(Notification notification) {
+ traces.addTrace("viewAddedToLayer", notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void viewRemovedFromLayer(Notification notification) {
+ traces.addTrace("viewRemovedFromLayer", notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void viewMovedBetweenLayer(Notification notification) {
+ traces.addTrace("viewMovedBetweenLayer", notification);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#multiViewsRemovedFromLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void multiViewsRemovedFromLayer(Notification notification) {
+ traces.addTrace("multiViewsRemovedFromLayer", notification);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#multiViewsAddedToLayer(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void multiViewsAddedToLayer(Notification notification) {
+ traces.addTrace("multiViewsAddedToLayer", notification);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersStackApplicationEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersStackApplicationEventListener.java
new file mode 100644
index 00000000000..352528f20ca
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersStackApplicationEventListener.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersStackApplicationEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceLayersStackApplicationEventListener implements ILayersStackApplicationEventListener {
+
+ public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener#layerStackAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ @Override
+ public void layerStackAdded(Notification msg) {
+ traces.addTrace("layerStackAdded", msg);
+
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener#layerStackRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ @Override
+ public void layerStackRemoved(Notification msg) {
+ traces.addTrace("layerStackRemoved", msg);
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceNotationDiagramRemovedFromResourceEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceNotationDiagramRemovedFromResourceEventListener.java
new file mode 100644
index 00000000000..af6d42d90c5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceNotationDiagramRemovedFromResourceEventListener.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link NotationDiagramRemovedFromResourceEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceNotationDiagramRemovedFromResourceEventListener implements INotationDiagramRemovedEventListener {
+
+ public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+
+ @Override
+ public void diagramRemoved(Notification msg) {
+ traces.addTrace("diagramRemoved", msg);
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelRootEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelRootEventNotifierTest.java
new file mode 100644
index 00000000000..3ce4280ff9f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelRootEventNotifierTest.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersModelRootEventNotifierTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * ModelSet created for each test
+ */
+ protected ModelSet modelSet;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ // LayersModel
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Notation model
+ NotationModel notationModel = new NotationModel();
+ mngr.registerModel(notationModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ modelSet = mngr;
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ modelSet.unload();
+ }
+
+ /**
+ * Test the correct creation of the modelSet
+ */
+ @Test
+ public void testModelSetCreation() {
+
+ NotationModel notationModel = (NotationModel)modelSet.getModel(NotationModel.MODEL_ID);
+ assertNotNull("NotationModel is created", notationModel);
+ // Try to create a Diagram
+ notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+ //
+ assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ assertNotNull("LayerModel is created", layersModel);
+ assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+ }
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventRootNotifier#LayersModelEventRootNotifier(org.eclipse.gmf.runtime.notation.Diagram)}.
+ */
+ @Test
+ public void testLayersModelEventRootNotifier() {
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ LayersModelEventRootNotifier notifier = new LayersModelEventRootNotifier(layersModel);
+
+
+ assertNotNull("notifier created", notifier);
+
+ // dispose
+ notifier.dispose();
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventRootNotifier#dispose()}.
+ */
+ @Test
+ public void testDispose() {
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ LayersModelEventRootNotifier notifier = new LayersModelEventRootNotifier(layersModel);
+
+ assertNotNull("notifier created", notifier);
+
+ // dispose
+ assertFalse("notifier is disposed", notifier.isDisposed());
+ notifier.dispose();
+ assertTrue("notifier is disposed", notifier.isDisposed());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventRootNotifier#addEventListener(org.eclipse.papyrus.layers.runtime.ILayersModelEventRootListener)}.
+ */
+ @Test
+ @Ignore
+ public void testAddEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventRootNotifier#removeEventListener(org.eclipse.papyrus.layers.runtime.ILayersModelEventRootListener)}.
+ */
+ @Test
+ @Ignore
+ public void testRemoveEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link LayersModelEventRootNotifier#fireLayersModelRootAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayersModelRootAddedEvent() {
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ LayersModelEventRootNotifier notifier = new LayersModelEventRootNotifier(layersModel);
+
+ TraceLayersModelRootEventListener listener = new TraceLayersModelRootEventListener();
+ notifier.addEventListener(listener);
+
+ // Add root
+ @SuppressWarnings("unused")
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+
+ // Check for event
+ assertTrue("event sent", listener.traces.size() > 0);
+ assertEquals("event found", "layersModelRootAdded", listener.traces.get(0).name);
+
+
+ }
+
+ /**
+ * Test method for {@link LayersModelEventRootNotifier#fireLayersModelRootRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayersModelRootRemovedEvent() {
+ LayersModel layersModel = (LayersModel)modelSet.getModel(LayersModel.MODEL_ID);
+ LayersModelEventRootNotifier notifier = new LayersModelEventRootNotifier(layersModel);
+
+ TraceLayersModelRootEventListener listener = new TraceLayersModelRootEventListener();
+ notifier.addEventListener(listener);
+
+ // Add root
+ LayersStackApplication application = layersModel.getLayerStackApplication();
+
+ // Check remove
+ listener.traces.clear();
+ layersModel.removeRoot(application);
+ assertTrue("event sent", listener.traces.size() > 0);
+ assertEquals("event found", "layersModelRootRemoved", listener.traces.get(0).name);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelTest.java
new file mode 100644
index 00000000000..6661752f8ca
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelTest.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersModelTest {
+
+ /**
+ * URI used to store the created model.
+ */
+ protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.model.LayersModel#LayersModel()}.
+ * @throws CoreException
+ * @throws IOException
+ */
+ @Test
+ public void testLayersModel() throws CoreException, IOException {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ // Check if root exist
+ assertNotNull("layer model root created", layersModel.getLayerStackApplication());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.model.LayersModel#lookupLayerStackApplication()}.
+ */
+ @Test
+ public void testLookupLayerStackApplication() {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ // Check if application lookup
+ assertNull("lookup application return null", layersModel.lookupLayerStackApplication());
+
+ // Get the application, this create it
+ assertNotNull("layer model root created", layersModel.getLayerStackApplication());
+ // lookup again, this found the application
+ assertNotNull("layer model root created", layersModel.lookupLayerStackApplication());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.model.LayersModel#getLayerStackApplication()}.
+ */
+ @Test
+ public void testGetLayerStackApplication() {
+ // Create ModelSet and Model
+ ModelSet mngr = new ModelSet();
+ LayersModel layersModel = new LayersModel();
+ mngr.registerModel(layersModel);
+ // Do create resources
+ URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+ mngr.createModels(uri);
+
+ // Check if root exist
+ assertNotNull("layer model root created", layersModel.getLayerStackApplication());
+ assertTrue("LayerStackApplication is found", layersModel.getLayerStackApplication() instanceof LayersStackApplication);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/TraceLayersModelRootEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/TraceLayersModelRootEventListener.java
new file mode 100644
index 00000000000..b23f60f209e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/TraceLayersModelRootEventListener.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link NotationDiagramRemovedFromResourceEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceLayersModelRootEventListener implements ILayersModelRootEventListener {
+
+ public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+
+ @Override
+ public void layersModelRootAdded(Notification msg) {
+ traces.addTrace("layersModelRootAdded", msg);
+ }
+
+
+ @Override
+ public void layersModelRootRemoved(Notification msg) {
+ traces.addTrace("layersModelRootRemoved", msg);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/ECoreUtilsTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/ECoreUtilsTest.java
new file mode 100644
index 00000000000..a3014cad9e5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/ECoreUtilsTest.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.utils;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class ECoreUtilsTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils#isAncestorInstanceOf(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EClass)}.
+ */
+ @Test
+ public void testIsAncestorInstanceOf() {
+ // Create a tree of EObject
+ TopLayerOperator layerOperator = LayersFactory.eINSTANCE.createTopLayerOperator();
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ layerOperator.getLayers().add(layer);
+
+ TypeInstance instance2 = LayersFactory.eINSTANCE.createBooleanInstance();
+ layer.getPropertyValueMap().put("prop1", instance2);
+
+ // Check ancestor
+ assertTrue("ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getTypeInstance()));
+ assertTrue("ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getLayer()));
+ assertTrue("ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getTopLayerOperator()));
+ assertTrue("ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getLayerOperator()));
+
+ assertFalse("no ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getLayersStack()));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils#lookupAncestorOfType(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EClass)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testLookupAncestorOfType() throws LayersException {
+ // Create a tree of EObject
+ TopLayerOperator layerOperator = LayersFactory.eINSTANCE.createTopLayerOperator();
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ layerOperator.getLayers().add(layer);
+
+ TypeInstance instance2 = LayersFactory.eINSTANCE.createBooleanInstance();
+ layer.getPropertyValueMap().put("prop1", instance2);
+
+ // Check ancestor
+ assertEquals("ancestor found", instance2, ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getTypeInstance()));
+ assertEquals("ancestor found", layer, ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getLayer()));
+ assertEquals("ancestor found", layerOperator, ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getTopLayerOperator()));
+ assertEquals("ancestor found", layerOperator, ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getLayerOperator()));
+
+ try {
+ ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getLayersStack());
+ fail("Exception is thrown");
+ } catch (LayersException e) {
+ // Ok, we expect an exception
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/NotationDiagramTestUtils.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/NotationDiagramTestUtils.java
new file mode 100644
index 00000000000..39b9469d024
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/NotationDiagramTestUtils.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.utils;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+
+
+/**
+ * Set of utilities on Notation for testing purposes
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationDiagramTestUtils {
+
+ /**
+ * Constructor.
+ *
+ */
+ public NotationDiagramTestUtils() {
+ }
+
+ public Diagram newDiagram() {
+
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ return diagram;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/TriggeredEventTraces.java b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/TriggeredEventTraces.java
new file mode 100644
index 00000000000..3309d5702e1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/TriggeredEventTraces.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+
+
+/**
+ * This class is used to record a list of traces.
+ * Traces are for event triggered by a method.
+ * This class is for tests purpose.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TriggeredEventTraces {
+
+
+ /**
+ * List of recorded events
+ */
+ public List<TriggeredEvent> traces = new ArrayList<TriggeredEvent>();
+
+ /**
+ * Clear all traces.
+ */
+ public void clear() {
+ traces.clear();
+ }
+
+ /**
+ * Add a trace to the list of traces
+ * @param name
+ * @param notification
+ */
+ public void addTrace(String name, Notification notification) {
+ traces.add(new TriggeredEvent(name, notification));
+ }
+
+ /**
+ * Return true if one of the trace has the specified name.
+ * @param name
+ * @return
+ */
+ public boolean contains(String name) {
+ if( name == null)
+ return false;
+
+ for(TriggeredEvent event : traces) {
+ if(name.equals(event.name))
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Return true if one of the trace has the specified name.
+ * @param name Name of the event to found
+ * @return the first event with the specified name, or null if nothing is found.
+ */
+ public TriggeredEvent getFirstEvent(String name) {
+ if( name == null)
+ return null;
+
+ for(TriggeredEvent event : traces) {
+ if(name.equals(event.name))
+ return event;
+ }
+ return null;
+ }
+
+
+ /**
+ * A record of an event
+ *
+ */
+ public class TriggeredEvent {
+ public String name;
+ public Notification notifier;
+ public Object object;
+ /**
+ * Constructor.
+ *
+ * @param name
+ * @param notifier
+ */
+ public TriggeredEvent(String name, Notification notifier) {
+ this.name = name;
+ this.notifier = notifier;
+ }
+ /**
+ * Constructor.
+ *
+ * @param name
+ * @param object
+ */
+ public TriggeredEvent(String name, Object object) {
+ this.name = name;
+ this.object = object;
+ }
+
+ }
+
+
+ /**
+ * Return the number of traces
+ * @return
+ */
+ public int size() {
+ return traces.size();
+ }
+
+ /**
+ * Get the specified trace.
+ * @param i
+ * @return
+ */
+ public TriggeredEvent get(int index) {
+ return traces.get(index);
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.classpath
new file mode 100644
index 00000000000..8a8f1668cdc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.project b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.project
new file mode 100644
index 00000000000..696eb81cc2b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.stackmodel.diagram</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/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..b8490e0c596
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: PluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel.diagram;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.layers.stackmodel.diagram.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.infra.core,
+ org.eclipse.papyrus.infra.emf;bundle-version="1.0.0",
+ org.eclipse.papyrus.infra.emf.diagram.common;bundle-version="1.0.0",
+ org.eclipse.emf.ecore;bundle-version="2.9.0",
+ org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
+ org.eclipse.papyrus.layers.stackmodel.editor;bundle-version="1.0.0",
+ org.eclipse.emf.transaction;bundle-version="1.4.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.0.0",
+ org.eclipse.core.expressions,
+ org.eclipse.gmf.runtime.diagram.ui.resources.editor,
+ org.eclipse.papyrus.layers.runtime;bundle-version="1.0.0",
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.7.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: ProviderName
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/about.html b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/about.html
new file mode 100644
index 00000000000..82d49bf5f81
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/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/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/build.properties
new file mode 100644
index 00000000000..b21d4ab7aa2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/build.properties
@@ -0,0 +1,17 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ icons/,\
+ plugin.properties
+src.includes = .classpath,\
+ .project,\
+ META-INF/,\
+ about.html,\
+ build.properties,\
+ icons/,\
+ plugin.properties,\
+ plugin.xml,\
+ src/
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/icons/layerDiagram.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/icons/layerDiagram.gif
new file mode 100644
index 00000000000..d07712589ae
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/icons/layerDiagram.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.properties
new file mode 100644
index 00000000000..4c48420e231
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2013 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:
+# Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers Papyrus Diagram (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.xml b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.xml
new file mode 100644
index 00000000000..a4f04ed27ce
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.infra.core.papyrusDiagram">
+ <editorDiagram
+ actionBarContributorId="org.eclipse.papyrus.uml.diagram.common.part.UMLDiagramActionBarContributor"
+ contextId="defaultContext"
+ factoryClass="org.eclipse.papyrus.layers.stackmodel.diagram.LayersTreeDiagramEditorFactory"
+ icon="icons/layerDiagram.gif">
+ </editorDiagram>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Create a Layers Tree Editor (EMF Tree Editor)"
+ id="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram"
+ name="Create Layers Tree">
+ </command>
+ <command
+ description="Create a child of the selected model element"
+ id="org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers.emfchildrenmenu"
+ name="Create Child">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.papyrus.layers.stackmodel.diagram.CreateLayersTreeDiagramHandler"
+ commandId="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram">
+ <enabledWhen>
+ <with
+ variable="activeEditorId">
+ <equals
+ value="org.eclipse.papyrus.infra.core.papyrusEditor">
+ </equals>
+ </with>
+ </enabledWhen>
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers.ShowCreateChildCommand"
+ commandId="org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers.emfchildrenmenu">
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="menu:org.eclipse.papyrus.ui.menu">
+ <menu
+ id="org.eclipse.papyrus.uml.diagram.ui.menu.diagrams"
+ label="Diagrams">
+ <command
+ commandId="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram"
+ icon="icons/layerDiagram.gif"
+ label="Create a new Layer Tree"
+ style="push"
+ tooltip="Create a new Layers Tree">
+ </command>
+ </menu>
+ </menuContribution>
+ <menuContribution
+ locationURI="toolbar:org.eclipse.ui.main.toolbar">
+ <toolbar
+ id="org.eclipse.papyrus.uml.diagram.ui.toolbar">
+ <command
+ commandId="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram"
+ icon="icons/layerDiagram.gif"
+ label="Create a new Layers Tree"
+ style="push"
+ tooltip="Create a new Layers Tree">
+ </command>
+ </toolbar>
+ </menuContribution>
+ <menuContribution
+ locationURI="popup:org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu">
+ <menu
+ id="org.eclipse.papyrus.layers.stackmodel.diagram"
+ label="Diagrams">
+ <command
+ commandId="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram"
+ icon="icons/layerDiagram.gif"
+ label="Create a new Layer Tree"
+ style="push"
+ tooltip="Create a new Layers Tree">
+ </command>
+ </menu>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu">
+ <menu
+ id="org.eclipse.papyrus.layers.stackmodel.ui.popupmenu"
+ label="Layers">
+ </menu>
+ </menuContribution>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/Activator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/Activator.java
new file mode 100644
index 00000000000..ac18f998112
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/Activator.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import org.eclipse.papyrus.infra.core.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.layers.stackmodel.diagram"; //$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)
+ */
+ 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)
+ */
+ 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/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/CreateLayersTreeDiagramHandler.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/CreateLayersTreeDiagramHandler.java
new file mode 100644
index 00000000000..ab88a4ae7da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/CreateLayersTreeDiagramHandler.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.emf.diagram.common.handler.CreateDiagramHandler;
+
+public class CreateLayersTreeDiagramHandler extends CreateDiagramHandler {
+
+ @Override
+ protected void addNewDiagram(ServicesRegistry registry) {
+ addNewDiagram("Layers Tree Editor", LayersTreeDiagramEditorFactory.EMF_DIAGRAM_TYPE, null, registry);
+ }
+
+ public void createDiagram(ServicesRegistry registry) {
+ addNewDiagram(registry);
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/DynamicContextMenu.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/DynamicContextMenu.java
new file mode 100644
index 00000000000..7cd1f73fda0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/DynamicContextMenu.java
@@ -0,0 +1,481 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CopyAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.CutAction;
+import org.eclipse.emf.edit.ui.action.DeleteAction;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.PasteAction;
+import org.eclipse.emf.edit.ui.action.RedoAction;
+import org.eclipse.emf.edit.ui.action.UndoAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersActionBarContributor;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditorPlugin;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+
+/**
+ *
+ * This class manage the dynamic menu for Layer diagram.
+ * It is a modification of the original {@link LayersActionBarContributor}.
+ * <br>
+ * Code is copied from the generated {@link LayersActionBarContributor}.
+ * Changes are made in order to work with Papyrus.
+ *
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DynamicContextMenu implements ISelectionChangedListener {
+ /**
+ * This keeps track of the active editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IEditorPart activeEditorPart;
+
+ /**
+ * This keeps track of the current selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelectionProvider selectionProvider;
+
+ /**
+ * The workbench page; <code>null</code> until <code>init</code> is called.
+ */
+ private IWorkbenchPage page;
+
+ /**
+ * This action opens the Properties view.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction showPropertiesViewAction =
+ new Action(LayersEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+ @Override
+ public void run() {
+ try {
+ getPage().showView("org.eclipse.ui.views.PropertySheet");
+ }
+ catch (PartInitException exception) {
+ LayersEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * This action refreshes the viewer of the current editor if the editor
+ * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction refreshViewerAction =
+ new Action(LayersEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+ @Override
+ public boolean isEnabled() {
+ return activeEditorPart instanceof IViewerProvider;
+ }
+
+ @Override
+ public void run() {
+ if (activeEditorPart instanceof IViewerProvider) {
+ Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+ if (viewer != null) {
+ viewer.refresh();
+ }
+ }
+ }
+ };
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createChildActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createChildMenuManager;
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createSiblingActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createSiblingMenuManager;
+
+ /**
+ * This is the action used to implement delete.
+ */
+ protected DeleteAction deleteAction;
+
+ /**
+ * This is the action used to implement cut.
+ */
+ protected CutAction cutAction;
+
+ /**
+ * This is the action used to implement copy.
+ */
+ protected CopyAction copyAction;
+
+ /**
+ * This is the action used to implement paste.
+ */
+ protected PasteAction pasteAction;
+
+ /**
+ * This is the action used to implement undo.
+ */
+ protected UndoAction undoAction;
+
+ /**
+ * This is the action used to implement redo.
+ */
+ protected RedoAction redoAction;
+
+ /**
+ * This is the action used to load a resource.
+ */
+ protected LoadResourceAction loadResourceAction;
+
+ /**
+ * This is the action used to control or uncontrol a contained object.
+ */
+ protected ControlAction controlAction;
+
+ /**
+ * This is the action used to perform validation.
+ */
+ protected ValidateAction validateAction;
+
+ /**
+ * This creates an instance of the contributor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DynamicContextMenu(IEditorPart part) {
+ loadResourceAction = new LoadResourceAction();
+ validateAction = new ValidateAction();
+ controlAction = new ControlAction();
+
+ // Added init
+ this.page = part.getEditorSite().getPage();
+ setActiveEditor(part);
+
+ MenuManager menuManager = new MenuManager();
+ menuManager.add(new Separator("additions"));
+ menuManager.add(new Separator("edit"));
+ contributeToMenu(menuManager);
+ }
+
+ /**
+ * This adds to the menu bar a menu and some separators for editor additions,
+ * as well as the sub-menus for object creation items.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void contributeToMenu(IMenuManager menuManager) {
+
+ IMenuManager submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditor_menu"), "org.eclipse.papyrus.layers.stackmodel.layersMenuID");
+// menuManager.insertAfter("additions", submenuManager);
+ menuManager.add(submenuManager);
+ submenuManager.add(new Separator("settings"));
+ submenuManager.add(new Separator("actions"));
+ submenuManager.add(new Separator("additions"));
+ submenuManager.add(new Separator("additions-end"));
+
+ // Prepare for CreateChild item addition or removal.
+ //
+ createChildMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ submenuManager.insertBefore("additions", createChildMenuManager);
+
+ // Prepare for CreateSibling item addition or removal.
+ //
+ createSiblingMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+ // Force an update because Eclipse hides empty menus now.
+ //
+ submenuManager.addMenuListener
+ (new IMenuListener() {
+ public void menuAboutToShow(IMenuManager menuManager) {
+ menuManager.updateAll(true);
+ }
+ });
+
+ addGlobalActions(submenuManager);
+ }
+
+ /**
+ * When the active editor changes, this remembers the change and registers with it as a selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setActiveEditor(IEditorPart part) {
+ activeEditorPart = part;
+
+ // Switch to the new selection provider.
+ //
+ if (selectionProvider != null) {
+ selectionProvider.removeSelectionChangedListener(this);
+ }
+ if (part == null) {
+ selectionProvider = null;
+ }
+ else {
+ selectionProvider = part.getSite().getSelectionProvider();
+ selectionProvider.addSelectionChangedListener(this);
+
+ // Fake a selection changed event to update the menus.
+ //
+ if (selectionProvider.getSelection() != null) {
+ selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+ }
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+ * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+ * that can be added to the selected object and updating the menus accordingly.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ // Remove any menu items for old selection.
+ //
+ if (createChildMenuManager != null) {
+ depopulateManager(createChildMenuManager, createChildActions);
+ }
+ if (createSiblingMenuManager != null) {
+ depopulateManager(createSiblingMenuManager, createSiblingActions);
+ }
+
+ // Query the new selection for appropriate new child/sibling descriptors
+ //
+ Collection<?> newChildDescriptors = null;
+ Collection<?> newSiblingDescriptors = null;
+
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+ Object object = ((IStructuredSelection)selection).getFirstElement();
+
+ EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+ newChildDescriptors = domain.getNewChildDescriptors(object, null);
+ newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+ }
+
+ // Generate actions for selection; populate and redraw the menus.
+ //
+ createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+ createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+ if (createChildMenuManager != null) {
+ populateManager(createChildMenuManager, createChildActions, null);
+ createChildMenuManager.update(true);
+ }
+ if (createSiblingMenuManager != null) {
+ populateManager(createSiblingMenuManager, createSiblingActions, null);
+ createSiblingMenuManager.update(true);
+ }
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+ * by inserting them before the specified contribution item <code>contributionID</code>.
+ * If <code>contributionID</code> is <code>null</code>, they are simply added.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+ if (actions != null) {
+ for (IAction action : actions) {
+ if (contributionID != null) {
+ manager.insertBefore(contributionID, action);
+ }
+ else {
+ manager.add(action);
+ }
+ }
+ }
+ }
+
+ /**
+ * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+ if (actions != null) {
+ IContributionItem[] items = manager.getItems();
+ for (int i = 0; i < items.length; i++) {
+ // Look into SubContributionItems
+ //
+ IContributionItem contributionItem = items[i];
+ while (contributionItem instanceof SubContributionItem) {
+ contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+ }
+
+ // Delete the ActionContributionItems with matching action.
+ //
+ if (contributionItem instanceof ActionContributionItem) {
+ IAction action = ((ActionContributionItem)contributionItem).getAction();
+ if (actions.contains(action)) {
+ manager.remove(contributionItem);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This populates the pop-up menu before it appears.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void menuAboutToShow(IMenuManager menuManager) {
+
+ System.err.println("menuAboutToShow("+ menuManager.getId()+ ")");
+ MenuManager submenuManager = null;
+
+ submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ populateManager(submenuManager, createChildActions, null);
+// menuManager.insertBefore("edit", submenuManager);
+ menuManager.add(submenuManager);
+
+ submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ populateManager(submenuManager, createSiblingActions, null);
+// menuManager.insertBefore("edit", submenuManager);
+ menuManager.add(submenuManager);
+ }
+
+ /**
+ * This inserts global actions before the "additions-end" separator.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addGlobalActions(IMenuManager menuManager) {
+ menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+ menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+ refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+ menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+ }
+
+ /**
+ * Returns this contributor's workbench page.
+ *
+ * @return the workbench page
+ */
+ public IWorkbenchPage getPage() {
+ return page;
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersDiagramActionBarContributor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersDiagramActionBarContributor.java
new file mode 100644
index 00000000000..fb46d80ad52
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersDiagramActionBarContributor.java
@@ -0,0 +1,435 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersActionBarContributor;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditorPlugin;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ *
+ * This is the action bar contributor for the Layers model diagram editor.
+ * <br>
+ * Code is copied from the generated {@link LayersActionBarContributor}.
+ * Changes are made in order to work with Papyrus.
+ *
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersDiagramActionBarContributor
+ extends EditingDomainActionBarContributor
+ implements ISelectionChangedListener {
+ /**
+ * This keeps track of the active editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IEditorPart activeEditorPart;
+
+ /**
+ * This keeps track of the current selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelectionProvider selectionProvider;
+
+ /**
+ * This action opens the Properties view.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction showPropertiesViewAction =
+ new Action(LayersEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+ @Override
+ public void run() {
+ try {
+ getPage().showView("org.eclipse.ui.views.PropertySheet");
+ }
+ catch (PartInitException exception) {
+ LayersEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * This action refreshes the viewer of the current editor if the editor
+ * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction refreshViewerAction =
+ new Action(LayersEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+ @Override
+ public boolean isEnabled() {
+ return activeEditorPart instanceof IViewerProvider;
+ }
+
+ @Override
+ public void run() {
+ if (activeEditorPart instanceof IViewerProvider) {
+ Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+ if (viewer != null) {
+ viewer.refresh();
+ }
+ }
+ }
+ };
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createChildActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createChildMenuManager;
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createSiblingActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createSiblingMenuManager;
+
+ /**
+ * This creates an instance of the contributor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersDiagramActionBarContributor() {
+ super(ADDITIONS_LAST_STYLE);
+ loadResourceAction = new LoadResourceAction();
+ validateAction = new ValidateAction();
+ controlAction = new ControlAction();
+ }
+
+ /**
+ * This adds Separators for editor additions to the tool bar.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void contributeToToolBar(IToolBarManager toolBarManager) {
+ toolBarManager.add(new Separator("layers-settings"));
+ toolBarManager.add(new Separator("layers-additions"));
+ }
+
+ /**
+ * This adds to the menu bar a menu and some separators for editor additions,
+ * as well as the sub-menus for object creation items.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void contributeToMenu(IMenuManager menuManager) {
+ super.contributeToMenu(menuManager);
+
+ IMenuManager submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditor_menu"), "org.eclipse.papyrus.layers.stackmodel.layersMenuID");
+ menuManager.insertAfter("additions", submenuManager);
+ submenuManager.add(new Separator("settings"));
+ submenuManager.add(new Separator("actions"));
+ submenuManager.add(new Separator("additions"));
+ submenuManager.add(new Separator("additions-end"));
+
+ // Prepare for CreateChild item addition or removal.
+ //
+ createChildMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ submenuManager.insertBefore("additions", createChildMenuManager);
+
+ // Prepare for CreateSibling item addition or removal.
+ //
+ createSiblingMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+ // Force an update because Eclipse hides empty menus now.
+ //
+ submenuManager.addMenuListener
+ (new IMenuListener() {
+ public void menuAboutToShow(IMenuManager menuManager) {
+ menuManager.updateAll(true);
+ }
+ });
+
+ addGlobalActions(submenuManager);
+ }
+
+ /**
+ * When the active editor changes, this remembers the change and registers with it as a selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setActiveEditor(IEditorPart part) {
+ super.setActiveEditor(part);
+ activeEditorPart = part;
+
+ // Switch to the new selection provider.
+ //
+ if (selectionProvider != null) {
+ selectionProvider.removeSelectionChangedListener(this);
+ }
+ if (part == null) {
+ selectionProvider = null;
+ }
+ else {
+ selectionProvider = part.getSite().getSelectionProvider();
+ selectionProvider.addSelectionChangedListener(this);
+
+ // Fake a selection changed event to update the menus.
+ //
+ if (selectionProvider.getSelection() != null) {
+ selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+ }
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+ * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+ * that can be added to the selected object and updating the menus accordingly.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ // Remove any menu items for old selection.
+ //
+ if (createChildMenuManager != null) {
+ depopulateManager(createChildMenuManager, createChildActions);
+ }
+ if (createSiblingMenuManager != null) {
+ depopulateManager(createSiblingMenuManager, createSiblingActions);
+ }
+
+ // Query the new selection for appropriate new child/sibling descriptors
+ //
+ Collection<?> newChildDescriptors = null;
+ Collection<?> newSiblingDescriptors = null;
+
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+ Object object = ((IStructuredSelection)selection).getFirstElement();
+
+ EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+ newChildDescriptors = domain.getNewChildDescriptors(object, null);
+ newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+ }
+
+ // Generate actions for selection; populate and redraw the menus.
+ //
+ createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+ createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+ if (createChildMenuManager != null) {
+ populateManager(createChildMenuManager, createChildActions, null);
+ createChildMenuManager.update(true);
+ }
+ if (createSiblingMenuManager != null) {
+ populateManager(createSiblingMenuManager, createSiblingActions, null);
+ createSiblingMenuManager.update(true);
+ }
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+ * by inserting them before the specified contribution item <code>contributionID</code>.
+ * If <code>contributionID</code> is <code>null</code>, they are simply added.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+ if (actions != null) {
+ for (IAction action : actions) {
+ if (contributionID != null) {
+ manager.insertBefore(contributionID, action);
+ }
+ else {
+ manager.add(action);
+ }
+ }
+ }
+ }
+
+ /**
+ * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+ if (actions != null) {
+ IContributionItem[] items = manager.getItems();
+ for (int i = 0; i < items.length; i++) {
+ // Look into SubContributionItems
+ //
+ IContributionItem contributionItem = items[i];
+ while (contributionItem instanceof SubContributionItem) {
+ contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+ }
+
+ // Delete the ActionContributionItems with matching action.
+ //
+ if (contributionItem instanceof ActionContributionItem) {
+ IAction action = ((ActionContributionItem)contributionItem).getAction();
+ if (actions.contains(action)) {
+ manager.remove(contributionItem);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This populates the pop-up menu before it appears.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void menuAboutToShow(IMenuManager menuManager) {
+ super.menuAboutToShow(menuManager);
+ MenuManager submenuManager = null;
+
+ submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ populateManager(submenuManager, createChildActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+
+ submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ populateManager(submenuManager, createSiblingActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+ }
+
+ /**
+ * This inserts global actions before the "additions-end" separator.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void addGlobalActions(IMenuManager menuManager) {
+ menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+ menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+ refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+ menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+ super.addGlobalActions(menuManager);
+ }
+
+ /**
+ * This ensures that a delete action will clean up all references to deleted objects.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean removeAllReferencesOnDelete() {
+ return true;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeDiagramEditorFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeDiagramEditorFactory.java
new file mode 100644
index 00000000000..6ccae15f1bf
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeDiagramEditorFactory.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.papyrus.infra.core.editor.BackboneException;
+import org.eclipse.papyrus.infra.core.extension.diagrameditor.EditorDescriptor;
+import org.eclipse.papyrus.infra.core.extension.diagrameditor.IPluggableEditorFactory;
+import org.eclipse.papyrus.infra.core.multidiagram.actionbarcontributor.ActionBarContributorRegistry;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IEditorModel;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageModel;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.EditorActionBarContributor;
+
+/**
+ * @author Cedric Dumoulin
+ * @author Remi Schnekenburger
+ * @author Patrick Tessier
+ */
+public class LayersTreeDiagramEditorFactory implements IPluggableEditorFactory {
+
+ /**
+ * Descriptor of the editor. Values come from the declaration in the extension point. The
+ * descriptor is set by the EditorFactory.
+ */
+ private EditorDescriptor editorDescriptor;
+
+ /**
+ * ServiceRegistry that can be provided to created editors.
+ */
+ private ServicesRegistry serviceRegistry;
+
+ /** name of the diagram in the di model */
+ public static final String EMF_DIAGRAM_TYPE = "layersTree";
+
+ public LayersTreeDiagramEditorFactory() {
+ }
+
+ /**
+ * Initialize the factory with useful Classes.
+ * @see IPluggableEditorFactory#init(ServicesRegistry, EditorDescriptor)
+ *
+ * @param serviceRegistry Service registry that will be provided to created editor.
+ * @param editorDescriptor Descriptor containing data from the Eclipse Extension.
+ */
+ public void init(ServicesRegistry serviceRegistry, EditorDescriptor editorDescriptor) {
+ this.editorDescriptor = editorDescriptor;
+ this.serviceRegistry = serviceRegistry;
+
+ }
+
+ /**
+ * TODO Implements next methods
+ *
+ * @see org.eclipse.papyrus.infra.core.extension.diagrameditor.IPluggableEditorFactory#createIPageModel(java.lang.Object)
+ * @param pageIdentifier
+ * @return
+ *
+ */
+ public IPageModel createIPageModel(Object pageIdentifier) {
+ return new EmfTreeEditorModel((Diagram)pageIdentifier, serviceRegistry);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.core.extension.diagrameditor.IPluggableEditorFactory#isPageModelFactoryFor(java.lang.Object)
+ * @param pageIdentifier
+ * @return
+ *
+ */
+ public boolean isPageModelFactoryFor(Object pageIdentifier) {
+ if(pageIdentifier instanceof Diagram) {
+ Diagram diagram = (Diagram)pageIdentifier;
+
+ if(EMF_DIAGRAM_TYPE.equals(diagram.getType())) {
+ return true;
+ }
+ }
+ // no
+ return false;
+ }
+
+ /**
+ * Model used to describe an instance of this editor in the SashSystem.
+ *
+ */
+ public class EmfTreeEditorModel implements IEditorModel {
+
+ /**
+ * The object used as page identifier and rawModel.
+ */
+ private Diagram pageIdentifier;
+
+ private ServicesRegistry servicesRegistry;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param pageIdentifier
+ * @param servicesRegistry
+ */
+ public EmfTreeEditorModel(Diagram pageIdentifier, ServicesRegistry servicesRegistry) {
+ this.pageIdentifier = pageIdentifier;
+ this.servicesRegistry = servicesRegistry;
+ }
+
+ /**
+ * Create the instance of the editor.
+ *
+ * @see org.eclipse.papyrus.sasheditor.contentprovider.IEditorModel#createIEditorPart()
+ * @return
+ * @throws PartInitException
+ *
+ */
+ public IEditorPart createIEditorPart() throws PartInitException {
+ try {
+ return new LayersTreeEditorDiagram(servicesRegistry);
+ } catch (ServiceException e) {
+ throw new PartInitException("Can't create Di2Editor.", e);
+ } catch (BackboneException e) {
+ throw new PartInitException("Can't create Di2Editor.", e);
+ }
+ }
+
+ public EditorActionBarContributor getActionBarContributor() {
+
+ String actionBarId = editorDescriptor.getActionBarContributorId();
+
+ // Do nothing if no EditorActionBarContributor is specify.
+ if(actionBarId == null || actionBarId.length() == 0) {
+ return null;
+ }
+
+ // Try to get it.
+
+ // Get ServiceRegistry
+ ActionBarContributorRegistry registry;
+ try {
+ registry = servicesRegistry
+ .getService(ActionBarContributorRegistry.class);
+ } catch (ServiceException e) {
+ // Service not found
+ // TODO Log the error
+ e.printStackTrace();
+ return null;
+ }
+
+ try {
+ return registry.getActionBarContributor(actionBarId);
+ } catch (BackboneException e) {
+ // TODO Log the error and throw an exception instead
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.sasheditor.contentprovider.IPageModel#getRawModel()
+ * @return
+ *
+ */
+ public Object getRawModel() {
+ return pageIdentifier;
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.sasheditor.contentprovider.IPageModel#getTabIcon()
+ * @return
+ *
+ */
+ public Image getTabIcon() {
+ ImageDescriptor imageDescriptor = editorDescriptor.getIcon();
+ if(imageDescriptor == null) {
+ return null;
+ }
+
+ return imageDescriptor.createImage();
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.sasheditor.contentprovider.IPageModel#getTabTitle()
+ * @return
+ *
+ */
+ public String getTabTitle() {
+ return "Layers Tree Editor";
+ }
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeEditorDiagram.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeEditorDiagram.java
new file mode 100644
index 00000000000..637bfbe775f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeEditorDiagram.java
@@ -0,0 +1,240 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import java.util.EventObject;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.papyrus.infra.core.editor.BackboneException;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditor;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+/**
+ * This is an example of a EMF UML model editor. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersTreeEditorDiagram extends LayersEditor implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+
+ /**
+ * ServiceRegistry used to retrieve needed services. This registry is provided by the multieditor.
+ */
+ protected ServicesRegistry servicesRegistry;
+
+ protected CommandStackListener commandStackListener;
+
+ /**
+ *
+ * Constructor. Create an DiEditor using the {@link ServicesRegistry}.
+ *
+ * @param servicesRegistry
+ */
+ public LayersTreeEditorDiagram(ServicesRegistry servicesRegistry) throws ServiceException, BackboneException {
+ this.servicesRegistry = servicesRegistry;
+ initEditor();
+ }
+
+ /**
+ * Init the editor from the specified context.
+ * Set the editing domain used by the EMF editor.
+ *
+ * @param editorContext
+ * @throws ServiceException
+ */
+ private void initEditor() throws ServiceException {
+
+ TransactionalEditingDomain papyrusEditingDomain = servicesRegistry.getService(TransactionalEditingDomain.class);
+ CommandStack commandStack = papyrusEditingDomain.getCommandStack();
+
+ // Add a listener to set the most recent command's affected objects to be the selection of
+ // the viewer with focus.
+ //
+
+ commandStackListener = new CommandStackListener() {
+
+ /**
+ * called when command stack has changed
+ * @see org.eclipse.emf.common.command.CommandStackListener#commandStackChanged(java.util.EventObject)
+ *
+ * @param event
+ */
+ public void commandStackChanged(final EventObject event) {
+ if(getContainer().isDisposed()) {
+ return;
+ }
+ getContainer().getDisplay().asyncExec(new Runnable() {
+
+ public void run() {
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+
+ // Try to select the affected objects.
+ //
+ Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+ if(mostRecentCommand != null) {
+ setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+ }
+
+ for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext();) {
+
+ PropertySheetPage propertySheetPage = i.next();
+
+ if ((propertySheetPage.getControl() == null)
+ || propertySheetPage.getControl().isDisposed()) {
+
+ i.remove();
+ } else {
+ propertySheetPage.refresh();
+ }
+ }
+ }
+ });
+ }
+
+ };
+
+ commandStack.addCommandStackListener(commandStackListener);
+
+ // Create the editing domain with a special command stack.
+ //
+ // Set the resourceSet wth our own resourceSet.
+ // editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new
+ // HashMap<Resource, Boolean>());
+
+ ResourceSet resourceSet = papyrusEditingDomain.getResourceSet();
+ editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, resourceSet);
+
+ // editingDomain = editorContext.getTransactionalEditingDomain();
+ // editingDomain.setResourceToReadOnlyMap(new HashMap<Resource, Boolean>());
+ }
+
+ /**
+ * This is the method called to load a resource into the editing domain's resource set based on
+ * the editor's input. Put the existing model into the editingDomain. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void createModel() {
+ // model is already created and loaded. Do nothing.
+ }
+
+ /**
+ * This is for implementing {@link IEditorPart} and simply saves the model file. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void doSave(IProgressMonitor progressMonitor) {
+ }
+
+ /**
+ * This also changes the editor's input. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void doSaveAs() {
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void doSaveAs(URI uri, IEditorInput editorInput) {
+ }
+
+ @Override
+ public void init(IEditorSite site, IEditorInput editorInput) {
+ super.init(site, editorInput);
+ setPartName("Layers Editor");
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public IActionBars getActionBars() {
+ try {
+ return getActionBarContributor().getActionBars();
+ } catch (NullPointerException e) {
+ // If we are nested, we have not access to ActionBarContributor()
+ return null;
+ }
+ }
+
+ @Override
+ public void dispose() {
+ //super.dispose(); //FIXME: Fails on a ClassCastException: The ActionBarContributor is not accessible
+ try {
+ TransactionalEditingDomain papyrusEditingDomain = servicesRegistry.getService(TransactionalEditingDomain.class);
+ CommandStack commandStack = papyrusEditingDomain.getCommandStack();
+ commandStack.removeCommandStackListener(commandStackListener);
+ } catch (ServiceException e) {
+ Activator.log.error(e);
+ }
+ }
+
+ /**
+ * Has we have no actionBarContributor, we can't get the status line. So skip this method.
+ */
+ @Override
+ public void setStatusLineManager(ISelection selection) {
+
+ }
+
+ /**
+ * Disable the native property sheet page.
+ */
+ @Override
+ public IPropertySheetPage getPropertySheetPage() {
+
+// return null;
+ return super.getPropertySheetPage();
+ }
+
+ protected DynamicContextMenu dynamicContextMenu;
+ @Override
+ public void menuAboutToShow(IMenuManager menuManager) {
+
+ if( dynamicContextMenu == null) {
+ dynamicContextMenu = new DynamicContextMenu(this);
+ }
+ dynamicContextMenu.menuAboutToShow(menuManager);
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/AbstractLayerCommand.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/AbstractLayerCommand.java
new file mode 100644
index 00000000000..9db736d7ae8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/AbstractLayerCommand.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers;
+
+
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Base class for Commands on Layers.
+ * This class provide utility methods to find the current Layer, LayerStack, ...
+ * @author cedric dumoulin
+ *
+ */
+public abstract class AbstractLayerCommand extends AbstractHandler {
+
+ /**
+ * Constructor.
+ *
+ */
+ public AbstractLayerCommand() {
+ super();
+ }
+
+ /**
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ * @param event
+ * @return
+ * @throws ExecutionException
+ *
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ executeTransaction(event);
+
+ return null;
+ }
+
+ /**
+ * Execute as transaction
+ * @param event
+ */
+ private void executeTransaction(ExecutionEvent event) {
+
+ // Get requested objects
+ final NotationDiagramHelper notationDiagramHelper;
+ TransactionalEditingDomain editingDomain;
+ try {
+ IEvaluationContext context = getIEvaluationContext(event);
+ notationDiagramHelper = lookupNotationDiagramHelperChecked(context);
+ editingDomain = lookupTransactionalEditingDomain(context);
+ } catch (NotFoundException e) {
+ // silently fails
+ return;
+ } catch (ServiceException e) {
+ // silently fails
+ return;
+ }
+
+
+ Command cmd = new RecordingCommand(editingDomain, getCommandName()) {
+
+ @Override
+ protected void doExecute() {
+ AbstractLayerCommand.this.doExecute(notationDiagramHelper);
+ }
+
+
+ };
+
+ editingDomain.getCommandStack().execute(cmd);
+
+ }
+
+ /**
+ * Get the name used in the {@link RecordingCommand}. This name will be visible in
+ * undo/redo.
+ *
+ * @return The command name to show.
+ */
+ public abstract String getCommandName();
+
+ /**
+ * Do the execution of the command.
+ * Subclass should implements this method.
+ *
+ * @param notationDiagramHelper
+ */
+ protected abstract void doExecute(NotationDiagramHelper notationDiagramHelper);
+
+// /**
+// *
+// * @return
+// * @throws NotFoundException
+// */
+// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+//
+// return lookupLayersViewChecked().getLayerStackMngrChecked();
+//
+// }
+
+
+ protected IEvaluationContext getIEvaluationContext(ExecutionEvent event) throws NotFoundException {
+ try {
+ return (IEvaluationContext)event.getApplicationContext();
+ } catch (ClassCastException e) {
+ throw new NotFoundException("IEvaluationContext can't be found.");
+ }
+
+ }
+ /**
+ * Try to lookup the TransactionalEditingDomain.
+ * @return
+ * @throws ServiceException If the Editing domain can't be found.
+ */
+ protected TransactionalEditingDomain lookupTransactionalEditingDomain(IEvaluationContext context) throws ServiceException {
+
+ // Get page from the event !
+// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+ return ServiceUtilsForIEvaluationContext.getInstance().getTransactionalEditingDomain(context);
+ }
+
+ /**
+ * Called by framework. Need to set the enabled flag.
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#setEnabled(java.lang.Object)
+ *
+ * @param evaluationContext
+ */
+ @Override
+ public void setEnabled(Object evaluationContext) {
+
+ if( ! (evaluationContext instanceof IEvaluationContext)) {
+ setBaseEnabled(false);
+ System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ") - no context");
+ return;
+ }
+
+ IEvaluationContext context = (IEvaluationContext)evaluationContext;
+
+ try {
+ NotationDiagramHelper diagramHelper = lookupNotationDiagramHelperChecked(context);
+
+ // Ask the subclass
+ setBaseEnabled(isEnabled(diagramHelper));
+
+ } catch (ServiceException e) {
+ // Can't find ServiceRegistry: disable
+ setBaseEnabled( false);
+ } catch (NotFoundException e) {
+ // Can't find ServiceRegistry: disable
+ setBaseEnabled( false);
+ }
+
+
+ System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ")");
+ }
+
+ /**
+ * Return true if the action is enabled, false otherwise.
+ * Subclasses should implements this method. The default implementation return true.
+ * @param notationDiagramHelper
+ * @return
+ */
+ public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+ return true;
+ }
+
+ // /**
+ // *
+ // * @return
+ // * @throws NotFoundException
+ // */
+ // protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+ //
+ // return lookupLayersViewChecked().getLayerStackMngrChecked();
+ //
+ // }
+
+ /**
+ * Get the notation diagram helper.
+ * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+ *
+ * @return The
+ * @throws NotFoundException
+ * @throws ServiceException
+ */
+ protected NotationDiagramHelper lookupNotationDiagramHelperChecked(IEvaluationContext context) throws NotFoundException, ServiceException {
+
+
+ // Get page from the event !
+ // IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+ IEditorPart editor = ServiceUtilsForIEvaluationContext.getInstance().getNestedActiveIEditorPart(context);
+
+ if( ! (editor instanceof DiagramDocumentEditor) ) {
+ throw new NotFoundException("Selected editor do not contains Diagram");
+ }
+ DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor)editor;
+
+ Diagram diagram = diagramEditor.getDiagram();
+ if(diagram == null) {
+ throw new NotFoundException("Selected editor do not contains Diagram");
+ }
+
+ // Lookup the Layer model
+ LayersModel layersModel = (LayersModel)ServiceUtilsForIEvaluationContext.getInstance().getModelSet(context).getModel(LayersModel.MODEL_ID);
+ // Return a new instance of the Helper
+ return new NotationDiagramHelper(layersModel, diagram);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/DynamicCreateChildMenu.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/DynamicCreateChildMenu.java
new file mode 100644
index 00000000000..c86b8afcaa6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/DynamicCreateChildMenu.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CompoundContributionItem;
+import org.eclipse.ui.menus.CommandContributionItem;
+
+
+/**
+ * This class is responsible to create the dynamic menu allowing to create
+ * child elements of a Layer Model.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DynamicCreateChildMenu extends CompoundContributionItem {
+
+ /**
+ * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
+ *
+ * @return
+ */
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ // TODO Auto-generated method stub
+ System.err.println("getContributionItems()");
+ IContributionItem[] items = new IContributionItem[1];
+
+ Map<String, String> parms = new HashMap<String, String>();
+ parms.put("groupBy", "Severity");
+ items[0] = new CommandContributionItem(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), null,
+ "org.eclipse.ui.views.problems.grouping",
+ parms, null, null, null, "Severity", null,
+ null, CommandContributionItem.STYLE_PUSH);
+ return items;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/ShowCreateChildCommand.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/ShowCreateChildCommand.java
new file mode 100644
index 00000000000..f10113a8754
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/ShowCreateChildCommand.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+
+
+/**
+ * Add a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class ShowCreateChildCommand extends AbstractLayerCommand implements IHandler {
+
+
+ /**
+ * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Attach Layer Stack";
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#doExecute(org.eclipse.papyrus.layers.application.NotationDiagramMngr)
+ *
+ * @param notationDiagramHelper
+ */
+ @Override
+ protected void doExecute(NotationDiagramHelper notationDiagramHelper) {
+ System.out.println( this.getClass().getSimpleName() + ".doExecute()");
+ notationDiagramHelper.attachLayersStack();
+ }
+
+
+ /**
+ * Return true if it is possible to attach aLyerStack.
+ */
+ @Override
+ public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+ return ! notationDiagramHelper.isLayersStackAttached();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/.classpath
new file mode 100644
index 00000000000..ed2bc1287f0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/.project b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/.project
new file mode 100644
index 00000000000..78d4c262973
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.stackmodel.edit</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.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..d7ed45a2a47
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.papyrus.layers.stackmodel.layers.provider,
+ org.eclipse.papyrus.layers.stackmodel.layers.provider.custom,
+ org.eclipse.papyrus.layers.configmodel.layersconfig.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.papyrus.layers.stackmodel;bundle-version="1.0.0";visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.gmf.runtime.notation;visibility:=reexport,
+ org.eclipse.gmf.runtime.notation.edit;visibility:=reexport,
+ org.eclipse.uml2.common.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/build.properties
new file mode 100644
index 00000000000..b84e618e6ba
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/build.properties
@@ -0,0 +1,19 @@
+#
+
+bin.includes = .,\
+ icons/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ bin/
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = .classpath,\
+ .project,\
+ META-INF/,\
+ build.properties,\
+ icons/,\
+ plugin.properties,\
+ plugin.xml,\
+ src/
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateAbstractLayer_propertyValueMap_StringToTypeInstanceMap.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateAbstractLayer_propertyValueMap_StringToTypeInstanceMap.gif
new file mode 100644
index 00000000000..46a3c0c3fe7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateAbstractLayer_propertyValueMap_StringToTypeInstanceMap.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFillInstance_fillColor_ColorInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFillInstance_fillColor_ColorInstance.gif
new file mode 100644
index 00000000000..7b652ac0ce4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFillInstance_fillColor_ColorInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_BooleanType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_BooleanType.gif
new file mode 100644
index 00000000000..517abc71fc3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_BooleanType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Color.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Color.gif
new file mode 100644
index 00000000000..40ef6854209
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Color.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_CustomType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_CustomType.gif
new file mode 100644
index 00000000000..d56a04bddf1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_CustomType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Fill.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Fill.gif
new file mode 100644
index 00000000000..1ebcee0d966
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Fill.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Folder.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Folder.gif
new file mode 100644
index 00000000000..40ef6854209
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Folder.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_FontType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_FontType.gif
new file mode 100644
index 00000000000..5a308e534a3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_FontType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_IntType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_IntType.gif
new file mode 100644
index 00000000000..ad157ff4a14
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_IntType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LayersStackApplication.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LayersStackApplication.gif
new file mode 100644
index 00000000000..bf50c763b2b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LayersStackApplication.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LineType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LineType.gif
new file mode 100644
index 00000000000..ad157ff4a14
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LineType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Metamodel.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Metamodel.gif
new file mode 100644
index 00000000000..3408e141df3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Metamodel.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Property.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Property.gif
new file mode 100644
index 00000000000..2c857d71201
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Property.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_StringType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_StringType.gif
new file mode 100644
index 00000000000..28525dfe9c2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_StringType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_Folder.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_Folder.gif
new file mode 100644
index 00000000000..40ef6854209
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_Folder.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_FolderElement.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_FolderElement.gif
new file mode 100644
index 00000000000..aced3dd98f8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_FolderElement.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_InstanciableElement.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_InstanciableElement.gif
new file mode 100644
index 00000000000..997e4345227
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_InstanciableElement.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorConfig.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorConfig.gif
new file mode 100644
index 00000000000..d56a04bddf1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorConfig.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorMultipleBinding.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorMultipleBinding.gif
new file mode 100644
index 00000000000..aced3dd98f8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorMultipleBinding.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorToOperatorBinding.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorToOperatorBinding.gif
new file mode 100644
index 00000000000..9a73c8d2dbc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorToOperatorBinding.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_OperatorConfig.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_OperatorConfig.gif
new file mode 100644
index 00000000000..8a4acfb07bd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_OperatorConfig.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_PropertyId.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_PropertyId.gif
new file mode 100644
index 00000000000..159895b0ded
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_PropertyId.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_TypeConfig.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_TypeConfig.gif
new file mode 100644
index 00000000000..5fc9320ef77
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_TypeConfig.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_LayerDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_LayerDescriptor.gif
new file mode 100644
index 00000000000..261e1fad4b6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_LayerDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_RegExpLayerDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_RegExpLayerDescriptor.gif
new file mode 100644
index 00000000000..9a4c2437ff5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_RegExpLayerDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_SimpleLayerDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_SimpleLayerDescriptor.gif
new file mode 100644
index 00000000000..b7be1657005
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_SimpleLayerDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerNamedStyle_layersStack_LayersStack.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerNamedStyle_layersStack_LayersStack.gif
new file mode 100644
index 00000000000..bb83437fa0f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerNamedStyle_layersStack_LayersStack.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_AndStackedLayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_AndStackedLayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..4a574b11303
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_AndStackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_LayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_LayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..1dbde94c82a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_LayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_OrStackedLayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_OrStackedLayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..6544d144643
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_OrStackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_StackedLayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_StackedLayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..09741e808c9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_StackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_TopLayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_TopLayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..700bd5ecdaf
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_TopLayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_CustomPropertyOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_CustomPropertyOperator.gif
new file mode 100644
index 00000000000..da050a4bce2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_CustomPropertyOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_DefaultPropertyOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_DefaultPropertyOperator.gif
new file mode 100644
index 00000000000..8d289e3e854
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_DefaultPropertyOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_PropertyOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_PropertyOperator.gif
new file mode 100644
index 00000000000..dcbeb3e22f1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_PropertyOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_OperatorBinding.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_OperatorBinding.gif
new file mode 100644
index 00000000000..0cd2b139046
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_OperatorBinding.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_SimpleBinding.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_SimpleBinding.gif
new file mode 100644
index 00000000000..a188f9ef9b2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_SimpleBinding.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_AllViewsDerivedLayer.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_AllViewsDerivedLayer.gif
new file mode 100644
index 00000000000..b2b20e53ddd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_AllViewsDerivedLayer.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_CustomLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_CustomLayerOperator.gif
new file mode 100644
index 00000000000..d44bc94e149
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_CustomLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_Layer.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_Layer.gif
new file mode 100644
index 00000000000..5bfbb66ec75
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_Layer.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_RegExpLayer.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_RegExpLayer.gif
new file mode 100644
index 00000000000..c2b071bdaf6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_RegExpLayer.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_StackedLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_StackedLayerOperator.gif
new file mode 100644
index 00000000000..d799c183313
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_StackedLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_TopLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_TopLayerOperator.gif
new file mode 100644
index 00000000000..46106a3ca64
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_TopLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValueMap_StringToTypeInstanceMap.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValueMap_StringToTypeInstanceMap.gif
new file mode 100644
index 00000000000..2bed2e1badc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValueMap_StringToTypeInstanceMap.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_BooleanInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_BooleanInstance.gif
new file mode 100644
index 00000000000..3eb3c309805
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_BooleanInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_IntInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_IntInstance.gif
new file mode 100644
index 00000000000..01f8ed65675
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_IntInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_StringInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_StringInstance.gif
new file mode 100644
index 00000000000..6a0e6fcc49a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_StringInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_factory_LayerApplicationFactory.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_factory_LayerApplicationFactory.gif
new file mode 100644
index 00000000000..85a51d1b4a8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_factory_LayerApplicationFactory.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerDescriptorRegistry_LayerDescriptorRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerDescriptorRegistry_LayerDescriptorRegistry.gif
new file mode 100644
index 00000000000..978ee2b3802
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerDescriptorRegistry_LayerDescriptorRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerOperatorDescriptorRegistry_LayerOperatorDescriptorRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerOperatorDescriptorRegistry_LayerOperatorDescriptorRegistry.gif
new file mode 100644
index 00000000000..d8aebba9fe8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerOperatorDescriptorRegistry_LayerOperatorDescriptorRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerStackRegistry_LayerStackDescriptorRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerStackRegistry_LayerStackDescriptorRegistry.gif
new file mode 100644
index 00000000000..375192a18bd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerStackRegistry_LayerStackDescriptorRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layersStacks_LayersStack.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layersStacks_LayersStack.gif
new file mode 100644
index 00000000000..64e652345ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layersStacks_LayersStack.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertyRegistry_PropertyRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertyRegistry_PropertyRegistry.gif
new file mode 100644
index 00000000000..85a51d1b4a8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertyRegistry_PropertyRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertySetterRegistry_PropertySetterRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertySetterRegistry_PropertySetterRegistry.gif
new file mode 100644
index 00000000000..ed30ca57b90
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertySetterRegistry_PropertySetterRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_AllViewsDerivedLayer.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_AllViewsDerivedLayer.gif
new file mode 100644
index 00000000000..28ed761ceb5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_AllViewsDerivedLayer.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_CustomLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_CustomLayerOperator.gif
new file mode 100644
index 00000000000..845e9f477fc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_CustomLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_Layer.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_Layer.gif
new file mode 100644
index 00000000000..dac0ebb0d01
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_Layer.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_RegExpLayer.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_RegExpLayer.gif
new file mode 100644
index 00000000000..424142efc05
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_RegExpLayer.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_StackedLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_StackedLayerOperator.gif
new file mode 100644
index 00000000000..252ab407d1c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_StackedLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_TopLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_TopLayerOperator.gif
new file mode 100644
index 00000000000..cd537c887d5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_TopLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_properties_Property.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_properties_Property.gif
new file mode 100644
index 00000000000..967985834eb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_properties_Property.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_typeRegistry_TypeRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_typeRegistry_TypeRegistry.gif
new file mode 100644
index 00000000000..033a89ee477
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_typeRegistry_TypeRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FillPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FillPropertySetter.gif
new file mode 100644
index 00000000000..f8fc1d58322
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FillPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FontPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FontPropertySetter.gif
new file mode 100644
index 00000000000..7e487021af0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FontPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsValidPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsValidPropertySetter.gif
new file mode 100644
index 00000000000..05c17b39cf5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsValidPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsVisiblePropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsVisiblePropertySetter.gif
new file mode 100644
index 00000000000..53a716ee742
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsVisiblePropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_LinePropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_LinePropertySetter.gif
new file mode 100644
index 00000000000..38bb022db37
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_LinePropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_NullPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_NullPropertySetter.gif
new file mode 100644
index 00000000000..a7d0fbc9612
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_NullPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_PropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_PropertySetter.gif
new file mode 100644
index 00000000000..05eb255f2e3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_PropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_isAbstractUmlSetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_isAbstractUmlSetter.gif
new file mode 100644
index 00000000000..53a716ee742
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_isAbstractUmlSetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_setterMap_StringToPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_setterMap_StringToPropertySetter.gif
new file mode 100644
index 00000000000..4d10d577799
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_setterMap_StringToPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_BooleanInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_BooleanInstance.gif
new file mode 100644
index 00000000000..889a6ddb258
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_BooleanInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_ColorInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_ColorInstance.gif
new file mode 100644
index 00000000000..b0210704f77
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_ColorInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FillInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FillInstance.gif
new file mode 100644
index 00000000000..3be3f93eed5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FillInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FontInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FontInstance.gif
new file mode 100644
index 00000000000..7faa8da6fa3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FontInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_IntInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_IntInstance.gif
new file mode 100644
index 00000000000..d9a8b0c6560
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_IntInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_LineInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_LineInstance.gif
new file mode 100644
index 00000000000..d9a8b0c6560
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_LineInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_NullInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_NullInstance.gif
new file mode 100644
index 00000000000..cece060fe09
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_NullInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_StringInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_StringInstance.gif
new file mode 100644
index 00000000000..b3062f7d4ca
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_StringInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertyIndexMap_value_PropertyIndex.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertyIndexMap_value_PropertyIndex.gif
new file mode 100644
index 00000000000..34611db616f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertyIndexMap_value_PropertyIndex.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FillPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FillPropertySetter.gif
new file mode 100644
index 00000000000..9d0e5395578
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FillPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FontPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FontPropertySetter.gif
new file mode 100644
index 00000000000..12ec17b7cf2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FontPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsValidPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsValidPropertySetter.gif
new file mode 100644
index 00000000000..051fac7db4d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsValidPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsVisiblePropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsVisiblePropertySetter.gif
new file mode 100644
index 00000000000..f5718d52f24
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsVisiblePropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_LinePropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_LinePropertySetter.gif
new file mode 100644
index 00000000000..f7e8a7b2a2f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_LinePropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_NullPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_NullPropertySetter.gif
new file mode 100644
index 00000000000..3d5c10a2630
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_NullPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_PropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_PropertySetter.gif
new file mode 100644
index 00000000000..396a4d777ec
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_PropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_isAbstractUmlSetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_isAbstractUmlSetter.gif
new file mode 100644
index 00000000000..f5718d52f24
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_isAbstractUmlSetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_BooleanInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_BooleanInstance.gif
new file mode 100644
index 00000000000..01247e32078
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_BooleanInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_ColorInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_ColorInstance.gif
new file mode 100644
index 00000000000..578475a4fca
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_ColorInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FillInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FillInstance.gif
new file mode 100644
index 00000000000..21f89523da9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FillInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FontInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FontInstance.gif
new file mode 100644
index 00000000000..fb71f8bdd83
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FontInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_IntInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_IntInstance.gif
new file mode 100644
index 00000000000..e891a2bce90
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_IntInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_LineInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_LineInstance.gif
new file mode 100644
index 00000000000..e891a2bce90
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_LineInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_NullInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_NullInstance.gif
new file mode 100644
index 00000000000..b5e551dd037
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_NullInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_StringInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_StringInstance.gif
new file mode 100644
index 00000000000..dbbf504e399
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_StringInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_BooleanType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_BooleanType.gif
new file mode 100644
index 00000000000..d203b1d7444
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_BooleanType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Color.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Color.gif
new file mode 100644
index 00000000000..81984fd9eaa
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Color.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_CustomType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_CustomType.gif
new file mode 100644
index 00000000000..983575cad25
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_CustomType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Fill.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Fill.gif
new file mode 100644
index 00000000000..b25c6299a5c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Fill.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_FontType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_FontType.gif
new file mode 100644
index 00000000000..eef19355ec5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_FontType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_IntType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_IntType.gif
new file mode 100644
index 00000000000..9dd025aad5c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_IntType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_LineType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_LineType.gif
new file mode 100644
index 00000000000..9dd025aad5c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_LineType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_StringType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_StringType.gif
new file mode 100644
index 00000000000..385b36595f6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_StringType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateTypeRegistry_types_StringToTypeMap.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateTypeRegistry_types_StringToTypeMap.gif
new file mode 100644
index 00000000000..d9e27cee7d4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateTypeRegistry_types_StringToTypeMap.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AbstractLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AbstractLayerOperator.gif
new file mode 100644
index 00000000000..a26660ec28f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AbstractLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AllViewsDerivedLayer.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AllViewsDerivedLayer.gif
new file mode 100644
index 00000000000..5274202bb6d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AllViewsDerivedLayer.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AndStackedLayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AndStackedLayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..ea58a657dc0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AndStackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanInstance.gif
new file mode 100644
index 00000000000..f412370c060
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanType.gif
new file mode 100644
index 00000000000..a17dc7d88e9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Color.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Color.gif
new file mode 100644
index 00000000000..b1f8afa4766
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Color.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/ColorInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/ColorInstance.gif
new file mode 100644
index 00000000000..f412370c060
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/ColorInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomLayerOperator.gif
new file mode 100644
index 00000000000..a17dc7d88e9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomPropertyOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomPropertyOperator.gif
new file mode 100644
index 00000000000..05dc74ad5da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomPropertyOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomType.gif
new file mode 100644
index 00000000000..83afb9b3c9a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/DefaultPropertyOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/DefaultPropertyOperator.gif
new file mode 100644
index 00000000000..7c2aaac84ee
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/DefaultPropertyOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Fill.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Fill.gif
new file mode 100644
index 00000000000..8a5c70cbd74
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Fill.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillInstance.gif
new file mode 100644
index 00000000000..f412370c060
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillPropertySetter.gif
new file mode 100644
index 00000000000..5a9bc7514fa
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Folder.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Folder.gif
new file mode 100644
index 00000000000..b1f8afa4766
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Folder.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FolderElement.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FolderElement.gif
new file mode 100644
index 00000000000..cb1755a7125
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FolderElement.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontInstance.gif
new file mode 100644
index 00000000000..f412370c060
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontPropertySetter.gif
new file mode 100644
index 00000000000..7b7c428c715
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontType.gif
new file mode 100644
index 00000000000..e4bc22dd17e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/InstanciableElement.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/InstanciableElement.gif
new file mode 100644
index 00000000000..4365960a04b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/InstanciableElement.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntInstance.gif
new file mode 100644
index 00000000000..f412370c060
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntType.gif
new file mode 100644
index 00000000000..d3dc5a9ad81
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsValidPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsValidPropertySetter.gif
new file mode 100644
index 00000000000..cb1755a7125
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsValidPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsVisiblePropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsVisiblePropertySetter.gif
new file mode 100644
index 00000000000..c3370c7ddd5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsVisiblePropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Layer.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Layer.gif
new file mode 100644
index 00000000000..9f55117f915
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Layer.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerApplicationFactory.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerApplicationFactory.gif
new file mode 100644
index 00000000000..c8d381f0b32
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerApplicationFactory.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptor.gif
new file mode 100644
index 00000000000..420eee17752
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptorRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptorRegistry.gif
new file mode 100644
index 00000000000..a17dc7d88e9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptorRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerNamedStyle.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerNamedStyle.gif
new file mode 100644
index 00000000000..106881e5d9b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerNamedStyle.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorConfig.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorConfig.gif
new file mode 100644
index 00000000000..83afb9b3c9a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorConfig.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..caf2804510d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptorRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptorRegistry.gif
new file mode 100644
index 00000000000..98b351f1c44
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptorRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorMultipleBinding.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorMultipleBinding.gif
new file mode 100644
index 00000000000..cb1755a7125
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorMultipleBinding.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorToOperatorBinding.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorToOperatorBinding.gif
new file mode 100644
index 00000000000..53500daf98e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorToOperatorBinding.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerStackDescriptorRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerStackDescriptorRegistry.gif
new file mode 100644
index 00000000000..2b692560297
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerStackDescriptorRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStack.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStack.gif
new file mode 100644
index 00000000000..f830b32dc77
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStack.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStackApplication.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStackApplication.gif
new file mode 100644
index 00000000000..b4ac2ec7108
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStackApplication.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineInstance.gif
new file mode 100644
index 00000000000..f412370c060
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LinePropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LinePropertySetter.gif
new file mode 100644
index 00000000000..338fb8d9a72
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LinePropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineType.gif
new file mode 100644
index 00000000000..d3dc5a9ad81
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Metamodel.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Metamodel.gif
new file mode 100644
index 00000000000..14af8aaee9f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Metamodel.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullInstance.gif
new file mode 100644
index 00000000000..f412370c060
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullPropertySetter.gif
new file mode 100644
index 00000000000..4365960a04b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorBinding.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorBinding.gif
new file mode 100644
index 00000000000..89ad5da38ab
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorBinding.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorConfig.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorConfig.gif
new file mode 100644
index 00000000000..ef56c140853
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorConfig.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OrStackedLayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OrStackedLayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..c3370c7ddd5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OrStackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Property.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Property.gif
new file mode 100644
index 00000000000..136e3b27269
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Property.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyId.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyId.gif
new file mode 100644
index 00000000000..134551bff7e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyId.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyIndex.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyIndex.gif
new file mode 100644
index 00000000000..c4a8af41844
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyIndex.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyOperator.gif
new file mode 100644
index 00000000000..c4a8af41844
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyRegistry.gif
new file mode 100644
index 00000000000..c8d381f0b32
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetter.gif
new file mode 100644
index 00000000000..7bac4fd3808
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetterRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetterRegistry.gif
new file mode 100644
index 00000000000..106881e5d9b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetterRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayer.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayer.gif
new file mode 100644
index 00000000000..5274202bb6d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayer.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayerDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayerDescriptor.gif
new file mode 100644
index 00000000000..7bac4fd3808
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayerDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleBinding.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleBinding.gif
new file mode 100644
index 00000000000..420eee17752
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleBinding.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleLayerDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleLayerDescriptor.gif
new file mode 100644
index 00000000000..b1f8afa4766
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleLayerDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperator.gif
new file mode 100644
index 00000000000..6329a4e22bb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..98b351f1c44
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringInstance.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringInstance.gif
new file mode 100644
index 00000000000..f412370c060
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringInstance.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertyIndexMap.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertyIndexMap.gif
new file mode 100644
index 00000000000..db7414e9372
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertyIndexMap.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertySetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertySetter.gif
new file mode 100644
index 00000000000..cdd3b76e3c0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertySetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeInstanceMap.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeInstanceMap.gif
new file mode 100644
index 00000000000..249fda935ce
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeInstanceMap.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeMap.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeMap.gif
new file mode 100644
index 00000000000..739ebbfa6ac
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeMap.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringType.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringType.gif
new file mode 100644
index 00000000000..05dc74ad5da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringType.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperator.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperator.gif
new file mode 100644
index 00000000000..af9f5f2e5d4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperator.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperatorDescriptor.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperatorDescriptor.gif
new file mode 100644
index 00000000000..c4fb30e9687
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperatorDescriptor.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeConfig.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeConfig.gif
new file mode 100644
index 00000000000..caf2804510d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeConfig.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeRegistry.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeRegistry.gif
new file mode 100644
index 00000000000..a26660ec28f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeRegistry.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/isAbstractUmlSetter.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/isAbstractUmlSetter.gif
new file mode 100644
index 00000000000..c3370c7ddd5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/isAbstractUmlSetter.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.properties
new file mode 100644
index 00000000000..141ccfbf793
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.properties
@@ -0,0 +1,236 @@
+#
+
+pluginName = Layers Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_LayerNamedStyle_type = Layer Named Style
+_UI_LayersStack_type = Stack
+_UI_LayerExpression_type = Layer Expression
+_UI_LayerDescriptor_type = Layer Descriptor
+_UI_Layer_type = Layer
+_UI_TypeInstance_type = Type Instance
+_UI_StringToTypeInstanceMap_type = String To Type Instance Map
+_UI_Property_type = Property
+_UI_FolderElement_type = Folder Element
+_UI_Type_type = Type
+_UI_Metamodel_type = Metamodel
+_UI_Folder_type = Folder
+_UI_IntInstance_type = Int :
+_UI_BooleanInstance_type = Boolean :
+_UI_StringInstance_type = String :
+_UI_IntType_type = Int Type
+_UI_BooleanType_type = Boolean Type
+_UI_StringType_type = String Type
+_UI_CustomType_type = Custom Type
+_UI_LayersStackApplication_type = Stack Application
+_UI_LayerStackDescriptorRegistry_type = Layer Stack Descriptor Registry
+_UI_PropertyRegistry_type = Property Registry
+_UI_StringToPropertyIndexMap_type = String To Property Index Map
+_UI_PropertyIndex_type = Property Index
+_UI_LayerOperator_type = Layer Operator
+_UI_AbstractLayerOperator_type = Layer Operator
+_UI_TopLayerOperator_type = Layer Operator (Top)
+_UI_StackedLayerOperator_type = Layer Operator (Stacked)
+_UI_CustomLayerOperator_type = Layer Operator (Custom)
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_LayerNamedStyle_layersStack_feature = Layers Stack
+_UI_LayersStack_layers_feature = Layers
+_UI_LayerExpression_name_feature = Name
+_UI_LayerExpression_description_feature = Description
+_UI_Layer_propertyValues_feature = Property Values
+_UI_Layer_propertyValueMap_feature = Property Value Map
+_UI_Layer_layerDescriptor_feature = Layer Descriptor
+_UI_Layer_views_feature = Views
+_UI_StringToTypeInstanceMap_key_feature = Key
+_UI_StringToTypeInstanceMap_value_feature = Value
+_UI_Property_type_feature = Type
+_UI_Property_defaultValue_feature = Default Value
+_UI_Property_name_feature = Name
+_UI_Property_description_feature = Description
+_UI_Type_metamodel_feature = Metamodel
+_UI_Type_name_feature = Name
+_UI_Type_description_feature = Description
+_UI_Metamodel_name_feature = Name
+_UI_Metamodel_description_feature = Description
+_UI_Metamodel_nsuri_feature = Nsuri
+_UI_Metamodel_pluginID_feature = Plugin ID
+_UI_Metamodel_ePackageInstanceName_feature = EPackage Instance Name
+_UI_Metamodel_isTypeValid_feature = Is Type Valid
+_UI_Folder_elements_feature = Elements
+_UI_Folder_name_feature = Name
+_UI_IntInstance_value_feature = Value
+_UI_BooleanInstance_value_feature = Value
+_UI_StringInstance_value_feature = Value
+_UI_CustomType_classifier_feature = Classifier
+_UI_LayersStackApplication_layersStacks_feature = Layers Stacks
+_UI_LayersStackApplication_layerStackRegistry_feature = Layer Stack Registry
+_UI_LayersStackApplication_propertyRegistry_feature = Property Registry
+_UI_PropertyRegistry_properties_feature = Properties
+_UI_PropertyRegistry_propertyIndexes_feature = Property Indexes
+_UI_StringToPropertyIndexMap_value_feature = Value
+_UI_StringToPropertyIndexMap_key_feature = Key
+_UI_PropertyIndex_property_feature = Property
+_UI_PropertyIndex_index_feature = Index
+_UI_LayerOperator_layers_feature = Layers
+_UI_Unknown_feature = Unspecified
+
+_UI_LayersStack_name_feature = Name
+_UI_LayersStack_description_feature = Description
+_UI_TypeRegistry_type = Type Registry
+_UI_StringToTypeMap_type = String To Type Map
+_UI_PropertyRegistry_typeRegistry_feature = Type Registry
+_UI_TypeRegistry_types_feature = Types
+_UI_StringToTypeMap_value_feature = Value
+_UI_StringToTypeMap_key_feature = Key
+_UI_ApplicationDependantElement_type = Application Dependant Element
+_UI_LayerDescriptorRegistry_type = Layer Descriptor Registry
+_UI_LayerApplicationFactory_type = Layer Application Factory
+_UI_SimpleLayerDescriptor_type = Simple Layer Descriptor
+_UI_RegExpLayerDescriptor_type = Reg Exp Layer Descriptor
+_UI_LayersStack_diagram_feature = Diagram
+_UI_ApplicationDependantElement_application_feature = Application
+_UI_LayersStackApplication_layerDescriptorRegistry_feature = Layer Descriptor Registry
+_UI_LayersStackApplication_factory_feature = Factory
+_UI_LayerDescriptorRegistry_layerDescriptors_feature = Layer Descriptors
+_UI_LayerDescriptor_propertyRegistry_feature = Property Registry
+_UI_LayerApplicationFactory_application_feature = Application
+_UI_NullInstance_type = Null Instance
+_UI_AbstractLayer_type = Abstract Layer
+_UI_RegExpLayer_type = Reg Exp Layer
+_UI_AbstractLayer_propertyValues_feature = Property Values
+_UI_AbstractLayer_propertyValueMap_feature = Property Value Map
+_UI_AbstractLayer_layerDescriptor_feature = Layer Descriptor
+_UI_AbstractLayer_views_feature = Views
+_UI_Color_type = Color
+_UI_ColorInstance_type = Color :
+_UI_FillInstance_type = Fill Transparency :
+_UI_Fill_type = Fill Color :
+_UI_ColorInstance_value_feature = Value
+_UI_FillInstance_transparency_feature = Transparency
+_UI_FillInstance_fillColor_feature = Fill Color
+_UI_PropertySetterRegistry_type = Property Setter Registry
+_UI_PropertySetter_type = Property Setter
+_UI_FillPropertySetter_type = Fill Property Setter
+_UI_IsValidPropertySetter_type = Is Valid Property Setter
+_UI_LayersStackApplication_propertySetterRegistry_feature = Property Setter Registry
+_UI_Property_index_feature = Index
+_UI_PropertySetterRegistry_propertySetters_feature = Property Setters
+_UI_PropertySetterRegistry_application_feature = Application
+_UI_PropertySetter_property_feature = Property
+_UI_StringToPropertySetter_type = String To Property Setter
+_UI_PropertySetterRegistry_setterMap_feature = Setter Map
+_UI_StringToPropertySetter_key_feature = Key
+_UI_StringToPropertySetter_value_feature = Value
+_UI_PropertySetter_propertyName_feature = Property Name
+_UI_NullPropertySetter_type = Null Property Setter
+_UI_ComputePropertyValueCommandItf_type = Compute Property Value Command Itf
+_UI_AbstractLayer_attachedProperties_feature = Attached Properties
+_UI_LineType_type = Line Type
+_UI_LineInstance_type = Line Instance
+_UI_LineInstance_lineColor_feature = Line Color
+_UI_LineInstance_lineWith_feature = Line With
+_UI_LinePropertySetter_type = Line Property Setter
+_UI_FontPropertySetter_type = Font Property Setter
+_UI_FontInstance_type = Font :
+_UI_FontType_type = Font Type
+_UI_FontInstance_fontColor_feature = Font Color
+_UI_FontInstance_fontName_feature = Font Name
+_UI_FontInstance_fontHeigh_feature = Font Heigh
+_UI_FontInstance_bold_feature = Bold
+_UI_IsVisiblePropertySetter_type = Is Visible Property Setter
+_UI_LayerOperatorDescriptor_type = Layer Operator Descriptor
+_UI_PropertyOperator_type = Property Operator
+_UI_LayerOperatorDescriptorRegistry_type = Layer Operator Descriptor Registry
+_UI_AbstractLayerOperator_layerOperatorDescriptor_feature = Layer Operator Descriptor
+_UI_LayerOperatorDescriptor_propertyOperators_feature = Property Operators
+_UI_LayerOperatorDescriptor_name_feature = Name
+_UI_PropertyOperator_name_feature = Name
+_UI_LayerOperatorDescriptorRegistry_descriptors_feature = Descriptors
+_UI_LayerOperatorDescriptorRegistry_propertyOperators_feature = Property Operators
+_UI_LayerOperatorDescriptorRegistry_propertyCollectionSize_feature = Property Collection Size
+_UI_DefaultPropertyOperator_type = Default Property Operator
+_UI_LayerOperatorDescriptor_defaultOperator_feature = Default Operator
+_UI_TopLayerOperatorDescriptor_type = Top Layer Operator Descriptor
+_UI_StackedLayerOperatorDescriptor_type = Stacked Layer Operator Descriptor
+_UI_CustomPropertyOperator_type = Custom Property Operator
+_UI_CustomPropertyOperator_classname_feature = Classname
+_UI_CustomPropertyOperator_operatorInstance_feature = Operator Instance
+_UI_LayersStackApplication_layerOperatorDescriptorRegistry_feature = Layer Operator Descriptor Registry
+_UI_AbstractLayerOperator_layerOperatorDescriptorName_feature = Layer Operator Descriptor Name
+_UI_LayerExpression_isEnabled_feature = Is Enabled
+_UI_LayerExpression_isUserEnabled_feature = Is User Enabled
+_UI_AndStackedLayerOperatorDescriptor_type = And Stacked Layer Operator Descriptor
+_UI_OrStackedLayerOperatorDescriptor_type = Or Stacked Layer Operator Descriptor
+_UI_LayerOperatorDescriptorRegistry_defaultOperator_feature = Default Operator
+_UI_PropertyRegistry_propertiesCount_feature = Properties Count
+_UI_CustomPropertyOperator_classBundleID_feature = Class Bundle ID
+_UI_LayerOperatorConfig_type = Layer Operator Config
+_UI_InstanciableElement_type = Instanciable Element
+_UI_OperatorConfig_type = Operator Config
+_UI_PropertyId_type = Property Id
+_UI_LayerOperatorToOperatorBinding_type = Layer Operator To Operator Binding
+_UI_Folder_folderElements_feature = Folder Elements
+_UI_FolderElement_name_feature = Name
+_UI_InstanciableElement_classname_feature = Classname
+_UI_InstanciableElement_bundleID_feature = Bundle ID
+_UI_InstanciableElement_displayName_feature = Display Name
+_UI_InstanciableElement_iconPath_feature = Icon Path
+_UI_OperatorConfig_propertyId_feature = Property Id
+_UI_LayerOperatorToOperatorBinding_operators_feature = Operators
+_UI_LayerOperatorToOperatorBinding_layerOperator_feature = Layer Operator
+_UI_LayersOperatorBinding_type = Layers Operator Binding
+_UI_LayerOperatorMultipleBinding_type = Layer Operator Multiple Binding
+_UI_SimpleBinding_type = Simple Binding
+_UI_LayerOperatorMultipleBinding_layerOperatorConfig_feature = Layer Operator Config
+_UI_LayerOperatorMultipleBinding_bindings_feature = Bindings
+_UI_SimpleBinding_operators_feature = Operators
+_UI_SimpleBinding_layerOperatorMultipleBinding_feature = Layer Operator Multiple Binding
+_UI_OperatorBinding_type = Operator Binding
+_UI_OperatorBinding_operator_feature = Operator
+_UI_OperatorBinding_layerOperatorConfig_feature = Layer Operator Config
+_UI_OperatorBinding_owner_feature = Owner
+_UI_OperatorBinding_propertyId_feature = Property Id
+_UI_InstanciableElement_classnameKind_feature = Classname Kind
+_UI_ClassnameKind_UNDEFINED_literal = UNDEFINED
+_UI_ClassnameKind_EMF_CLASSNAME_literal = EMF_CLASSNAME
+_UI_ClassnameKind_POJO_CLASSNAME_literal = POJO_CLASSNAME
+_UI_ClassnameKind_NOT_FOUND_literal = NOT_FOUND
+_UI_TypeConfig_type = Type Config
+_UI_PropertyId_type_feature = Type
+_UI_isAbstractUmlSetter_type = is Abstract Uml Setter
+_UI_RegExpLayer_expr_feature = Expr
+_UI_RegExpLayer_language_feature = Language
+_UI_IsAbstractUmlSetter_type = Is Abstract Uml Setter
+_UI_LayerExpression_isLayerEnabledInternal_feature = Is Layer Enabled Internal
+_UI_LayerExpression_isLayerEnabled_feature = Is Layer Enabled
+_UI_RegExpLayer_isLevel1DomainChangedEventDependant_feature = Is Level1 Domain Changed Event Dependant
+_UI_RegExpLayer_isAnyDomainChangedEventDependant_feature = Is Any Domain Changed Event Dependant
+_UI_RegExpLayer_isLevel1DiagramChangedEventdependant_feature = Is Level1 Diagram Changed Eventdependant
+_UI_RegExpLayer_isAnyDiagramChangedEventDependant_feature = Is Any Diagram Changed Event Dependant
+_UI_RegExpLayer_expressionContextObjectType_feature = Expression Context Object Type
+_UI_RegExpLayer_isDomainChangedEventDependant_feature = Is Domain Changed Event Dependant
+_UI_RegExpLayer_domainChangedEventLevel_feature = Domain Changed Event Level
+_UI_RegExpLayer_isDiagramChangedEventDependant_feature = Is Diagram Changed Event Dependant
+_UI_RegExpLayer_diagramChangedEventLevel_feature = Diagram Changed Event Level
+_UI_EventLevel_level1_literal = level1
+_UI_EventLevel_allLevels_literal = allLevels
+_UI_LayerExpression_isBranchEnabled_feature = Is Branch Enabled
+_UI_LayerExpression_owningLayersStack_feature = Owning Layers Stack
+_UI_AllViewsDerivedLayer_type = All Views Derived Layer
+_UI_LayerExpression_state_feature = State
+_UI_LayerState_detached_literal = detached
+_UI_LayerState_attached_literal = attached
+_UI_LayersStack_state_feature = State
+_UI_LayersContainer_type = Container
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.xml b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.xml
new file mode 100644
index 00000000000..6081cefabd7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated layers -->
+ <factory
+ uri="org.eclipse.papyrus.layers.0.10"
+ class="org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated layersconfig -->
+ <factory
+ uri="org.eclipse.papyrus.layersconfig.0.10"
+ class="org.eclipse.papyrus.layers.configmodel.layersconfig.provider.LayersconfigItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderElementItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderElementItemProvider.java
new file mode 100644
index 00000000000..e7c4c7bbab5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderElementItemProvider.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FolderElementItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FolderElementItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FolderElement_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_FolderElement_name_feature", "_UI_FolderElement_type"),
+ LayersconfigPackage.Literals.FOLDER_ELEMENT__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns FolderElement.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/FolderElement"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((FolderElement)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_FolderElement_type") :
+ getString("_UI_FolderElement_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(FolderElement.class)) {
+ case LayersconfigPackage.FOLDER_ELEMENT__NAME:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersconfigEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderItemProvider.java
new file mode 100644
index 00000000000..e6451fde7d6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderItemProvider.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FolderItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FolderItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Folder.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Folder"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Folder)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Folder_type") :
+ getString("_UI_Folder_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Folder.class)) {
+ case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+ LayersconfigFactory.eINSTANCE.createFolder()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+ LayersconfigFactory.eINSTANCE.createLayerOperatorConfig()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+ LayersconfigFactory.eINSTANCE.createOperatorConfig()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+ LayersconfigFactory.eINSTANCE.createPropertyId()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+ LayersconfigFactory.eINSTANCE.createTypeConfig()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+ LayersconfigFactory.eINSTANCE.createLayerOperatorMultipleBinding()));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/InstanciableElementItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/InstanciableElementItemProvider.java
new file mode 100644
index 00000000000..713dcf91798
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/InstanciableElementItemProvider.java
@@ -0,0 +1,249 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InstanciableElementItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstanciableElementItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addClassnamePropertyDescriptor(object);
+ addBundleIDPropertyDescriptor(object);
+ addDisplayNamePropertyDescriptor(object);
+ addIconPathPropertyDescriptor(object);
+ addClassnameKindPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Classname feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addClassnamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_InstanciableElement_classname_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_classname_feature", "_UI_InstanciableElement_type"),
+ LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__CLASSNAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Bundle ID feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBundleIDPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_InstanciableElement_bundleID_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_bundleID_feature", "_UI_InstanciableElement_type"),
+ LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__BUNDLE_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Display Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDisplayNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_InstanciableElement_displayName_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_displayName_feature", "_UI_InstanciableElement_type"),
+ LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__DISPLAY_NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Icon Path feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIconPathPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_InstanciableElement_iconPath_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_iconPath_feature", "_UI_InstanciableElement_type"),
+ LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__ICON_PATH,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Classname Kind feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addClassnameKindPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_InstanciableElement_classnameKind_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_classnameKind_feature", "_UI_InstanciableElement_type"),
+ LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__CLASSNAME_KIND,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns InstanciableElement.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/InstanciableElement"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((InstanciableElement)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_InstanciableElement_type") :
+ getString("_UI_InstanciableElement_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(InstanciableElement.class)) {
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorConfigItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorConfigItemProvider.java
new file mode 100644
index 00000000000..ed1ea73cd3e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorConfigItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerOperatorConfigItemProvider
+ extends InstanciableElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorConfigItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns LayerOperatorConfig.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerOperatorConfig"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LayerOperatorConfig)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LayerOperatorConfig_type") :
+ getString("_UI_LayerOperatorConfig_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorMultipleBindingItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorMultipleBindingItemProvider.java
new file mode 100644
index 00000000000..80fc363cb99
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorMultipleBindingItemProvider.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerOperatorMultipleBindingItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorMultipleBindingItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addLayerOperatorConfigPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Layer Operator Config feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLayerOperatorConfigPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerOperatorMultipleBinding_layerOperatorConfig_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorMultipleBinding_layerOperatorConfig_feature", "_UI_LayerOperatorMultipleBinding_type"),
+ LayersconfigPackage.Literals.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersconfigPackage.Literals.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns LayerOperatorMultipleBinding.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerOperatorMultipleBinding"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LayerOperatorMultipleBinding)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LayerOperatorMultipleBinding_type") :
+ getString("_UI_LayerOperatorMultipleBinding_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LayerOperatorMultipleBinding.class)) {
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersconfigPackage.Literals.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS,
+ LayersconfigFactory.eINSTANCE.createOperatorBinding()));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigEditPlugin.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigEditPlugin.java
new file mode 100644
index 00000000000..ffdff444aa4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigEditPlugin.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Layersconfig edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class LayersconfigEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final LayersconfigEditPlugin INSTANCE = new LayersconfigEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipsePlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigItemProviderAdapterFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigItemProviderAdapterFactory.java
new file mode 100644
index 00000000000..b481399bfad
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigItemProviderAdapterFactory.java
@@ -0,0 +1,353 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.util.LayersconfigAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersconfigItemProviderAdapterFactory extends LayersconfigAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FolderItemProvider folderItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFolderAdapter() {
+ if (folderItemProvider == null) {
+ folderItemProvider = new FolderItemProvider(this);
+ }
+
+ return folderItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorConfigItemProvider layerOperatorConfigItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerOperatorConfigAdapter() {
+ if (layerOperatorConfigItemProvider == null) {
+ layerOperatorConfigItemProvider = new LayerOperatorConfigItemProvider(this);
+ }
+
+ return layerOperatorConfigItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OperatorConfigItemProvider operatorConfigItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createOperatorConfigAdapter() {
+ if (operatorConfigItemProvider == null) {
+ operatorConfigItemProvider = new OperatorConfigItemProvider(this);
+ }
+
+ return operatorConfigItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyIdItemProvider propertyIdItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPropertyIdAdapter() {
+ if (propertyIdItemProvider == null) {
+ propertyIdItemProvider = new PropertyIdItemProvider(this);
+ }
+
+ return propertyIdItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeConfigItemProvider typeConfigItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTypeConfigAdapter() {
+ if (typeConfigItemProvider == null) {
+ typeConfigItemProvider = new TypeConfigItemProvider(this);
+ }
+
+ return typeConfigItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorMultipleBindingItemProvider layerOperatorMultipleBindingItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerOperatorMultipleBindingAdapter() {
+ if (layerOperatorMultipleBindingItemProvider == null) {
+ layerOperatorMultipleBindingItemProvider = new LayerOperatorMultipleBindingItemProvider(this);
+ }
+
+ return layerOperatorMultipleBindingItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OperatorBindingItemProvider operatorBindingItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createOperatorBindingAdapter() {
+ if (operatorBindingItemProvider == null) {
+ operatorBindingItemProvider = new OperatorBindingItemProvider(this);
+ }
+
+ return operatorBindingItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (folderItemProvider != null) folderItemProvider.dispose();
+ if (layerOperatorConfigItemProvider != null) layerOperatorConfigItemProvider.dispose();
+ if (operatorConfigItemProvider != null) operatorConfigItemProvider.dispose();
+ if (propertyIdItemProvider != null) propertyIdItemProvider.dispose();
+ if (typeConfigItemProvider != null) typeConfigItemProvider.dispose();
+ if (layerOperatorMultipleBindingItemProvider != null) layerOperatorMultipleBindingItemProvider.dispose();
+ if (operatorBindingItemProvider != null) operatorBindingItemProvider.dispose();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorBindingItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorBindingItemProvider.java
new file mode 100644
index 00000000000..ed4a2e8e787
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorBindingItemProvider.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OperatorBindingItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperatorBindingItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addOperatorPropertyDescriptor(object);
+ addLayerOperatorConfigPropertyDescriptor(object);
+ addPropertyIdPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Operator feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOperatorPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_OperatorBinding_operator_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_OperatorBinding_operator_feature", "_UI_OperatorBinding_type"),
+ LayersconfigPackage.Literals.OPERATOR_BINDING__OPERATOR,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Layer Operator Config feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLayerOperatorConfigPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_OperatorBinding_layerOperatorConfig_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_OperatorBinding_layerOperatorConfig_feature", "_UI_OperatorBinding_type"),
+ LayersconfigPackage.Literals.OPERATOR_BINDING__LAYER_OPERATOR_CONFIG,
+ false,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Property Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPropertyIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_OperatorBinding_propertyId_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_OperatorBinding_propertyId_feature", "_UI_OperatorBinding_type"),
+ LayersconfigPackage.Literals.OPERATOR_BINDING__PROPERTY_ID,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns OperatorBinding.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/OperatorBinding"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_OperatorBinding_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersconfigEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorConfigItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorConfigItemProvider.java
new file mode 100644
index 00000000000..1000e6a9f8c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorConfigItemProvider.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OperatorConfigItemProvider
+ extends InstanciableElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperatorConfigItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns OperatorConfig.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/OperatorConfig"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((OperatorConfig)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_OperatorConfig_type") :
+ getString("_UI_OperatorConfig_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/PropertyIdItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/PropertyIdItemProvider.java
new file mode 100644
index 00000000000..ff80967f854
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/PropertyIdItemProvider.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertyIdItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyIdItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addTypePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PropertyId_type_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_PropertyId_type_feature", "_UI_PropertyId_type"),
+ LayersconfigPackage.Literals.PROPERTY_ID__TYPE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns PropertyId.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyId"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((PropertyId)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_PropertyId_type") :
+ getString("_UI_PropertyId_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/TypeConfigItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/TypeConfigItemProvider.java
new file mode 100644
index 00000000000..9fd2b2e3869
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/TypeConfigItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypeConfigItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeConfigItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns TypeConfig.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/TypeConfig"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((TypeConfig)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_TypeConfig_type") :
+ getString("_UI_TypeConfig_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerItemProvider.java
new file mode 100644
index 00000000000..364d3898549
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerItemProvider.java
@@ -0,0 +1,248 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AbstractLayerItemProvider
+ extends LayerExpressionItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractLayerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addPropertyValuesPropertyDescriptor(object);
+ addLayerDescriptorPropertyDescriptor(object);
+ addViewsPropertyDescriptor(object);
+ addAttachedPropertiesPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Property Values feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPropertyValuesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_AbstractLayer_propertyValues_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayer_propertyValues_feature", "_UI_AbstractLayer_type"),
+ LayersPackage.Literals.ABSTRACT_LAYER__PROPERTY_VALUES,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Layer Descriptor feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLayerDescriptorPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_AbstractLayer_layerDescriptor_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayer_layerDescriptor_feature", "_UI_AbstractLayer_type"),
+ LayersPackage.Literals.ABSTRACT_LAYER__LAYER_DESCRIPTOR,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Views feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addViewsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_AbstractLayer_views_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayer_views_feature", "_UI_AbstractLayer_type"),
+ LayersPackage.Literals.ABSTRACT_LAYER__VIEWS,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Attached Properties feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addAttachedPropertiesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_AbstractLayer_attachedProperties_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayer_attachedProperties_feature", "_UI_AbstractLayer_type"),
+ LayersPackage.Literals.ABSTRACT_LAYER__ATTACHED_PROPERTIES,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.ABSTRACT_LAYER__PROPERTY_VALUE_MAP);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((AbstractLayer)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_AbstractLayer_type") :
+ getString("_UI_AbstractLayer_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(AbstractLayer.class)) {
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.ABSTRACT_LAYER__PROPERTY_VALUE_MAP,
+ LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP)));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerOperatorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerOperatorItemProvider.java
new file mode 100644
index 00000000000..29b9b06de0c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerOperatorItemProvider.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AbstractLayerOperatorItemProvider
+ extends LayerOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractLayerOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addLayerOperatorDescriptorPropertyDescriptor(object);
+ addLayerOperatorDescriptorNamePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Layer Operator Descriptor feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLayerOperatorDescriptorPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_AbstractLayerOperator_layerOperatorDescriptor_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayerOperator_layerOperatorDescriptor_feature", "_UI_AbstractLayerOperator_type"),
+ LayersPackage.Literals.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Layer Operator Descriptor Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLayerOperatorDescriptorNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_AbstractLayerOperator_layerOperatorDescriptorName_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayerOperator_layerOperatorDescriptorName_feature", "_UI_AbstractLayerOperator_type"),
+ LayersPackage.Literals.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns AbstractLayerOperator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/AbstractLayerOperator"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((AbstractLayerOperator)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_AbstractLayerOperator_type") :
+ getString("_UI_AbstractLayerOperator_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(AbstractLayerOperator.class)) {
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AllViewsDerivedLayerItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AllViewsDerivedLayerItemProvider.java
new file mode 100644
index 00000000000..7b1042ca5c0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AllViewsDerivedLayerItemProvider.java
@@ -0,0 +1,110 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AllViewsDerivedLayerItemProvider
+ extends AbstractLayerItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AllViewsDerivedLayerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns AllViewsDerivedLayer.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/AllViewsDerivedLayer"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((AllViewsDerivedLayer)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_AllViewsDerivedLayer_type") :
+ getString("_UI_AllViewsDerivedLayer_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AndStackedLayerOperatorDescriptorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AndStackedLayerOperatorDescriptorItemProvider.java
new file mode 100644
index 00000000000..82b357b7a19
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AndStackedLayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AndStackedLayerOperatorDescriptorItemProvider
+ extends StackedLayerOperatorDescriptorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AndStackedLayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns AndStackedLayerOperatorDescriptor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/AndStackedLayerOperatorDescriptor"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((AndStackedLayerOperatorDescriptor)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_AndStackedLayerOperatorDescriptor_type") :
+ getString("_UI_AndStackedLayerOperatorDescriptor_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ApplicationDependantElementItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ApplicationDependantElementItemProvider.java
new file mode 100644
index 00000000000..d8238133868
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ApplicationDependantElementItemProvider.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApplicationDependantElementItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ApplicationDependantElementItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addApplicationPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Application feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addApplicationPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ApplicationDependantElement_application_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_ApplicationDependantElement_application_feature", "_UI_ApplicationDependantElement_type"),
+ LayersPackage.Literals.APPLICATION_DEPENDANT_ELEMENT__APPLICATION,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_ApplicationDependantElement_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanInstanceItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanInstanceItemProvider.java
new file mode 100644
index 00000000000..6800910b651
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanInstanceItemProvider.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BooleanInstanceItemProvider
+ extends TypeInstanceItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanInstanceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BooleanInstance_value_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_BooleanInstance_value_feature", "_UI_BooleanInstance_type"),
+ LayersPackage.Literals.BOOLEAN_INSTANCE__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns BooleanInstance.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanInstance"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ BooleanInstance booleanInstance = (BooleanInstance)object;
+ return getString("_UI_BooleanInstance_type") + " " + booleanInstance.isValue();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(BooleanInstance.class)) {
+ case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanTypeItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanTypeItemProvider.java
new file mode 100644
index 00000000000..6833259cd23
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanTypeItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BooleanTypeItemProvider
+ extends TypeItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanTypeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns BooleanType.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanType"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((BooleanType)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_BooleanType_type") :
+ getString("_UI_BooleanType_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorInstanceItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorInstanceItemProvider.java
new file mode 100644
index 00000000000..f11ede8cc26
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorInstanceItemProvider.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ColorInstanceItemProvider
+ extends TypeInstanceItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ColorInstanceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ColorInstance_value_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_ColorInstance_value_feature", "_UI_ColorInstance_type"),
+ LayersPackage.Literals.COLOR_INSTANCE__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns ColorInstance.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/ColorInstance"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ ColorInstance colorInstance = (ColorInstance)object;
+ return getString("_UI_ColorInstance_type") + " " + colorInstance.getValue();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(ColorInstance.class)) {
+ case LayersPackage.COLOR_INSTANCE__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorItemProvider.java
new file mode 100644
index 00000000000..ccd114df2ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Color} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ColorItemProvider
+ extends TypeItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ColorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Color.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Color"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Color)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Color_type") :
+ getString("_UI_Color_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomLayerOperatorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomLayerOperatorItemProvider.java
new file mode 100644
index 00000000000..6099e8d47d4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomLayerOperatorItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CustomLayerOperatorItemProvider
+ extends LayerOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomLayerOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns CustomLayerOperator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/CustomLayerOperator"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((CustomLayerOperator)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_CustomLayerOperator_type") :
+ getString("_UI_CustomLayerOperator_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomPropertyOperatorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomPropertyOperatorItemProvider.java
new file mode 100644
index 00000000000..95381600d50
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomPropertyOperatorItemProvider.java
@@ -0,0 +1,200 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CustomPropertyOperatorItemProvider
+ extends PropertyOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomPropertyOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addClassnamePropertyDescriptor(object);
+ addOperatorInstancePropertyDescriptor(object);
+ addClassBundleIDPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Classname feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addClassnamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_CustomPropertyOperator_classname_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_CustomPropertyOperator_classname_feature", "_UI_CustomPropertyOperator_type"),
+ LayersPackage.Literals.CUSTOM_PROPERTY_OPERATOR__CLASSNAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Operator Instance feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOperatorInstancePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_CustomPropertyOperator_operatorInstance_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_CustomPropertyOperator_operatorInstance_feature", "_UI_CustomPropertyOperator_type"),
+ LayersPackage.Literals.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE,
+ true,
+ false,
+ true,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Class Bundle ID feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addClassBundleIDPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_CustomPropertyOperator_classBundleID_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_CustomPropertyOperator_classBundleID_feature", "_UI_CustomPropertyOperator_type"),
+ LayersPackage.Literals.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns CustomPropertyOperator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/CustomPropertyOperator"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((CustomPropertyOperator)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_CustomPropertyOperator_type") :
+ getString("_UI_CustomPropertyOperator_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(CustomPropertyOperator.class)) {
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomTypeItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomTypeItemProvider.java
new file mode 100644
index 00000000000..80cb5909b9b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomTypeItemProvider.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CustomTypeItemProvider
+ extends TypeItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomTypeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addClassifierPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Classifier feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addClassifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_CustomType_classifier_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_CustomType_classifier_feature", "_UI_CustomType_type"),
+ LayersPackage.Literals.CUSTOM_TYPE__CLASSIFIER,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns CustomType.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/CustomType"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((CustomType)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_CustomType_type") :
+ getString("_UI_CustomType_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(CustomType.class)) {
+ case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/DefaultPropertyOperatorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/DefaultPropertyOperatorItemProvider.java
new file mode 100644
index 00000000000..a6d8047525b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/DefaultPropertyOperatorItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DefaultPropertyOperatorItemProvider
+ extends PropertyOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultPropertyOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns DefaultPropertyOperator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/DefaultPropertyOperator"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((DefaultPropertyOperator)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DefaultPropertyOperator_type") :
+ getString("_UI_DefaultPropertyOperator_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillInstanceItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillInstanceItemProvider.java
new file mode 100644
index 00000000000..be4c8e82068
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillInstanceItemProvider.java
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FillInstanceItemProvider
+ extends TypeInstanceItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FillInstanceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addTransparencyPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Transparency feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTransparencyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FillInstance_transparency_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_FillInstance_transparency_feature", "_UI_FillInstance_type"),
+ LayersPackage.Literals.FILL_INSTANCE__TRANSPARENCY,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.FILL_INSTANCE__FILL_COLOR);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns FillInstance.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/FillInstance"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ FillInstance fillInstance = (FillInstance)object;
+ return getString("_UI_FillInstance_type") + " " + fillInstance.getTransparency();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(FillInstance.class)) {
+ case LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FILL_INSTANCE__FILL_COLOR,
+ LayersFactory.eINSTANCE.createColorInstance()));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillItemProvider.java
new file mode 100644
index 00000000000..4a53cb4296e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Fill} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FillItemProvider
+ extends TypeItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FillItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Fill.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Fill"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Fill)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Fill_type") :
+ getString("_UI_Fill_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillPropertySetterItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillPropertySetterItemProvider.java
new file mode 100644
index 00000000000..6ba629f7897
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillPropertySetterItemProvider.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FillPropertySetterItemProvider
+ extends PropertySetterItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FillPropertySetterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns FillPropertySetter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/FillPropertySetter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((FillPropertySetter)object).getPropertyName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_FillPropertySetter_type") :
+ getString("_UI_FillPropertySetter_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderElementItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderElementItemProvider.java
new file mode 100644
index 00000000000..490ac3c7cb0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderElementItemProvider.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FolderElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FolderElementItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FolderElementItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_FolderElement_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderItemProvider.java
new file mode 100644
index 00000000000..b56c4372372
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderItemProvider.java
@@ -0,0 +1,249 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Folder} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FolderItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FolderItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Folder_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Folder_name_feature", "_UI_Folder_type"),
+ LayersPackage.Literals.FOLDER__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.FOLDER__ELEMENTS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Folder.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Folder"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Folder)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Folder_type") :
+ getString("_UI_Folder_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Folder.class)) {
+ case LayersPackage.FOLDER__NAME:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.FOLDER__ELEMENTS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createLayersStackApplication()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createProperty()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createMetamodel()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createFolder()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createIntType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createBooleanType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createStringType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createCustomType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createColor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createFill()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createLineType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.FOLDER__ELEMENTS,
+ LayersFactory.eINSTANCE.createFontType()));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontInstanceItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontInstanceItemProvider.java
new file mode 100644
index 00000000000..1da7492a961
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontInstanceItemProvider.java
@@ -0,0 +1,225 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FontInstanceItemProvider
+ extends TypeInstanceItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FontInstanceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addFontColorPropertyDescriptor(object);
+ addFontNamePropertyDescriptor(object);
+ addFontHeighPropertyDescriptor(object);
+ addBoldPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Font Color feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addFontColorPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FontInstance_fontColor_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_FontInstance_fontColor_feature", "_UI_FontInstance_type"),
+ LayersPackage.Literals.FONT_INSTANCE__FONT_COLOR,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Font Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addFontNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FontInstance_fontName_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_FontInstance_fontName_feature", "_UI_FontInstance_type"),
+ LayersPackage.Literals.FONT_INSTANCE__FONT_NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Font Heigh feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addFontHeighPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FontInstance_fontHeigh_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_FontInstance_fontHeigh_feature", "_UI_FontInstance_type"),
+ LayersPackage.Literals.FONT_INSTANCE__FONT_HEIGH,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Bold feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBoldPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FontInstance_bold_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_FontInstance_bold_feature", "_UI_FontInstance_type"),
+ LayersPackage.Literals.FONT_INSTANCE__BOLD,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns FontInstance.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/FontInstance"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((FontInstance)object).getFontName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_FontInstance_type") :
+ getString("_UI_FontInstance_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(FontInstance.class)) {
+ case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+ case LayersPackage.FONT_INSTANCE__FONT_NAME:
+ case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+ case LayersPackage.FONT_INSTANCE__BOLD:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontPropertySetterItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontPropertySetterItemProvider.java
new file mode 100644
index 00000000000..727d0796dc9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontPropertySetterItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FontPropertySetterItemProvider
+ extends PropertySetterItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FontPropertySetterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns FontPropertySetter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/FontPropertySetter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((FontPropertySetter)object).getPropertyName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_FontPropertySetter_type") :
+ getString("_UI_FontPropertySetter_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontTypeItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontTypeItemProvider.java
new file mode 100644
index 00000000000..1ce37fd51dc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontTypeItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FontTypeItemProvider
+ extends TypeItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FontTypeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns FontType.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/FontType"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((FontType)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_FontType_type") :
+ getString("_UI_FontType_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntInstanceItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntInstanceItemProvider.java
new file mode 100644
index 00000000000..5cc63a5bf62
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntInstanceItemProvider.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntInstanceItemProvider
+ extends TypeInstanceItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntInstanceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntInstance_value_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_IntInstance_value_feature", "_UI_IntInstance_type"),
+ LayersPackage.Literals.INT_INSTANCE__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns IntInstance.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/IntInstance"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ IntInstance intInstance = (IntInstance)object;
+ return getString("_UI_IntInstance_type") + " " + intInstance.getValue();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(IntInstance.class)) {
+ case LayersPackage.INT_INSTANCE__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntTypeItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntTypeItemProvider.java
new file mode 100644
index 00000000000..1f78d7e5766
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntTypeItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IntType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntTypeItemProvider
+ extends TypeItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntTypeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns IntType.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/IntType"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((IntType)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IntType_type") :
+ getString("_UI_IntType_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsAbstractUmlSetterItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsAbstractUmlSetterItemProvider.java
new file mode 100644
index 00000000000..17b5fe7a960
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsAbstractUmlSetterItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsAbstractUmlSetterItemProvider
+ extends PropertySetterItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IsAbstractUmlSetterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns IsAbstractUmlSetter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/IsAbstractUmlSetter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((IsAbstractUmlSetter)object).getPropertyName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IsAbstractUmlSetter_type") :
+ getString("_UI_IsAbstractUmlSetter_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsValidPropertySetterItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsValidPropertySetterItemProvider.java
new file mode 100644
index 00000000000..f410431a1f6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsValidPropertySetterItemProvider.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsValidPropertySetterItemProvider
+ extends PropertySetterItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IsValidPropertySetterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns IsValidPropertySetter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/IsValidPropertySetter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((IsValidPropertySetter)object).getPropertyName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IsValidPropertySetter_type") :
+ getString("_UI_IsValidPropertySetter_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsVisiblePropertySetterItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsVisiblePropertySetterItemProvider.java
new file mode 100644
index 00000000000..8b5cfcb8699
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsVisiblePropertySetterItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsVisiblePropertySetterItemProvider
+ extends PropertySetterItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IsVisiblePropertySetterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns IsVisiblePropertySetter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/IsVisiblePropertySetter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((IsVisiblePropertySetter)object).getPropertyName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IsVisiblePropertySetter_type") :
+ getString("_UI_IsVisiblePropertySetter_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerApplicationFactoryItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerApplicationFactoryItemProvider.java
new file mode 100644
index 00000000000..ae7415571c3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerApplicationFactoryItemProvider.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerApplicationFactoryItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerApplicationFactoryItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns LayerApplicationFactory.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerApplicationFactory"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_LayerApplicationFactory_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorItemProvider.java
new file mode 100644
index 00000000000..22edd906f80
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorItemProvider.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerDescriptorItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerDescriptorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addPropertyRegistryPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Property Registry feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPropertyRegistryPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerDescriptor_propertyRegistry_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerDescriptor_propertyRegistry_feature", "_UI_LayerDescriptor_type"),
+ LayersPackage.Literals.LAYER_DESCRIPTOR__PROPERTY_REGISTRY,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns LayerDescriptor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerDescriptor"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_LayerDescriptor_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorRegistryItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorRegistryItemProvider.java
new file mode 100644
index 00000000000..4f8b30175ed
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorRegistryItemProvider.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerDescriptorRegistryItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerDescriptorRegistryItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns LayerDescriptorRegistry.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerDescriptorRegistry"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_LayerDescriptorRegistry_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LayerDescriptorRegistry.class)) {
+ case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS,
+ LayersFactory.eINSTANCE.createLayerDescriptor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS,
+ LayersFactory.eINSTANCE.createSimpleLayerDescriptor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS,
+ LayersFactory.eINSTANCE.createRegExpLayerDescriptor()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerExpressionItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerExpressionItemProvider.java
new file mode 100644
index 00000000000..e0c72c9a36b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerExpressionItemProvider.java
@@ -0,0 +1,283 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerExpressionItemProvider
+ extends
+ApplicationDependantElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerExpressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ addIsLayerEnabledInternalPropertyDescriptor(object);
+ addIsLayerEnabledPropertyDescriptor(object);
+ addIsBranchEnabledPropertyDescriptor(object);
+ addOwningLayersStackPropertyDescriptor(object);
+ addStatePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerExpression_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_name_feature", "_UI_LayerExpression_type"),
+ LayersPackage.Literals.LAYER_EXPRESSION__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerExpression_description_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_description_feature", "_UI_LayerExpression_type"),
+ LayersPackage.Literals.LAYER_EXPRESSION__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Is Layer Enabled Internal feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIsLayerEnabledInternalPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerExpression_isLayerEnabledInternal_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_isLayerEnabledInternal_feature", "_UI_LayerExpression_type"),
+ LayersPackage.Literals.LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Is Layer Enabled feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIsLayerEnabledPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerExpression_isLayerEnabled_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_isLayerEnabled_feature", "_UI_LayerExpression_type"),
+ LayersPackage.Literals.LAYER_EXPRESSION__IS_LAYER_ENABLED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Is Branch Enabled feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIsBranchEnabledPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerExpression_isBranchEnabled_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_isBranchEnabled_feature", "_UI_LayerExpression_type"),
+ LayersPackage.Literals.LAYER_EXPRESSION__IS_BRANCH_ENABLED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Owning Layers Stack feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOwningLayersStackPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerExpression_owningLayersStack_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_owningLayersStack_feature", "_UI_LayerExpression_type"),
+ LayersPackage.Literals.LAYER_EXPRESSION__OWNING_LAYERS_STACK,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the State feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addStatePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerExpression_state_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_state_feature", "_UI_LayerExpression_type"),
+ LayersPackage.Literals.LAYER_EXPRESSION__STATE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LayerExpression)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LayerExpression_type") :
+ getString("_UI_LayerExpression_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LayerExpression.class)) {
+ case LayersPackage.LAYER_EXPRESSION__NAME:
+ case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+ case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL:
+ case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+ case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+ case LayersPackage.LAYER_EXPRESSION__STATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerItemProvider.java
new file mode 100644
index 00000000000..b5c236e0d38
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerItemProvider.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Layer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerItemProvider
+ extends
+AbstractLayerItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Layer.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Layer"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Layer)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Layer_type") :
+ getString("_UI_Layer_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerNamedStyleItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerNamedStyleItemProvider.java
new file mode 100644
index 00000000000..29f5191c283
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerNamedStyleItemProvider.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.gmf.runtime.notation.provider.NamedStyleItemProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerNamedStyleItemProvider
+ extends NamedStyleItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerNamedStyleItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.LAYER_NAMED_STYLE__LAYERS_STACK);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns LayerNamedStyle.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerNamedStyle"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LayerNamedStyle)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LayerNamedStyle_type") :
+ getString("_UI_LayerNamedStyle_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LayerNamedStyle.class)) {
+ case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ *
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection/*<Object>*/ newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_NAMED_STYLE__LAYERS_STACK,
+ LayersFactory.eINSTANCE.createLayersStack()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorItemProvider.java
new file mode 100644
index 00000000000..075559ec7e2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerOperatorDescriptorItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addPropertyOperatorsPropertyDescriptor(object);
+ addNamePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Property Operators feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPropertyOperatorsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerOperatorDescriptor_propertyOperators_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorDescriptor_propertyOperators_feature", "_UI_LayerOperatorDescriptor_type"),
+ LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerOperatorDescriptor_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorDescriptor_name_feature", "_UI_LayerOperatorDescriptor_type"),
+ LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns LayerOperatorDescriptor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerOperatorDescriptor"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LayerOperatorDescriptor)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LayerOperatorDescriptor_type") :
+ getString("_UI_LayerOperatorDescriptor_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LayerOperatorDescriptor.class)) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorRegistryItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorRegistryItemProvider.java
new file mode 100644
index 00000000000..651b1257190
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorRegistryItemProvider.java
@@ -0,0 +1,266 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerOperatorDescriptorRegistryItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptorRegistryItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addPropertyCollectionSizePropertyDescriptor(object);
+ addDefaultOperatorPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Property Collection Size feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPropertyCollectionSizePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerOperatorDescriptorRegistry_propertyCollectionSize_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorDescriptorRegistry_propertyCollectionSize_feature", "_UI_LayerOperatorDescriptorRegistry_type"),
+ LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Default Operator feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDefaultOperatorPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayerOperatorDescriptorRegistry_defaultOperator_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorDescriptorRegistry_defaultOperator_feature", "_UI_LayerOperatorDescriptorRegistry_type"),
+ LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS);
+ childrenFeatures.add(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns LayerOperatorDescriptorRegistry.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerOperatorDescriptorRegistry"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = (LayerOperatorDescriptorRegistry)object;
+ return getString("_UI_LayerOperatorDescriptorRegistry_type") + " " + layerOperatorDescriptorRegistry.getPropertyCollectionSize();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LayerOperatorDescriptorRegistry.class)) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+ LayersFactory.eINSTANCE.createLayerOperatorDescriptor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+ LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+ LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+ LayersFactory.eINSTANCE.createAndStackedLayerOperatorDescriptor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+ LayersFactory.eINSTANCE.createOrStackedLayerOperatorDescriptor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS,
+ LayersFactory.eINSTANCE.createPropertyOperator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS,
+ LayersFactory.eINSTANCE.createDefaultPropertyOperator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS,
+ LayersFactory.eINSTANCE.createCustomPropertyOperator()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorItemProvider.java
new file mode 100644
index 00000000000..04e6d0207c0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorItemProvider.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerOperatorItemProvider
+ extends LayerExpressionItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.LAYER_OPERATOR__LAYERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LayerOperator)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LayerOperator_type") :
+ getString("_UI_LayerOperator_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LayerOperator.class)) {
+ case LayersPackage.LAYER_OPERATOR__LAYERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+ LayersFactory.eINSTANCE.createTopLayerOperator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+ LayersFactory.eINSTANCE.createStackedLayerOperator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+ LayersFactory.eINSTANCE.createCustomLayerOperator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+ LayersFactory.eINSTANCE.createRegExpLayer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+ LayersFactory.eINSTANCE.createLayer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+ LayersFactory.eINSTANCE.createAllViewsDerivedLayer()));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerStackDescriptorRegistryItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerStackDescriptorRegistryItemProvider.java
new file mode 100644
index 00000000000..eaa1ab24282
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerStackDescriptorRegistryItemProvider.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerStackDescriptorRegistryItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerStackDescriptorRegistryItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns LayerStackDescriptorRegistry.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerStackDescriptorRegistry"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_LayerStackDescriptorRegistry_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersEditPlugin.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersEditPlugin.java
new file mode 100644
index 00000000000..414df1d3241
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersEditPlugin.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+
+import org.eclipse.gmf.runtime.notation.NotationEditPlugin;
+
+/**
+ * This is the central singleton for the Layers edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class LayersEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final LayersEditPlugin INSTANCE = new LayersEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ EcoreEditPlugin.INSTANCE,
+ NotationEditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipsePlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersItemProviderAdapterFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersItemProviderAdapterFactory.java
new file mode 100644
index 00000000000..59d255dc3e7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersItemProviderAdapterFactory.java
@@ -0,0 +1,1577 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.util.LayersAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersItemProviderAdapterFactory extends LayersAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerNamedStyleItemProvider layerNamedStyleItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerNamedStyleAdapter() {
+ if (layerNamedStyleItemProvider == null) {
+ layerNamedStyleItemProvider = new LayerNamedStyleItemProvider(this);
+ }
+
+ return layerNamedStyleItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersStackItemProvider layersStackItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayersStackAdapter() {
+ if (layersStackItemProvider == null) {
+ layersStackItemProvider = new LayersStackItemProvider(this);
+ }
+
+ return layersStackItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerDescriptorItemProvider layerDescriptorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerDescriptorAdapter() {
+ if (layerDescriptorItemProvider == null) {
+ layerDescriptorItemProvider = new LayerDescriptorItemProvider(this);
+ }
+
+ return layerDescriptorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerApplicationFactoryItemProvider layerApplicationFactoryItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerApplicationFactoryAdapter() {
+ if (layerApplicationFactoryItemProvider == null) {
+ layerApplicationFactoryItemProvider = new LayerApplicationFactoryItemProvider(this);
+ }
+
+ return layerApplicationFactoryItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertySetterRegistryItemProvider propertySetterRegistryItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPropertySetterRegistryAdapter() {
+ if (propertySetterRegistryItemProvider == null) {
+ propertySetterRegistryItemProvider = new PropertySetterRegistryItemProvider(this);
+ }
+
+ return propertySetterRegistryItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToPropertySetterItemProvider stringToPropertySetterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link java.util.Map.Entry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringToPropertySetterAdapter() {
+ if (stringToPropertySetterItemProvider == null) {
+ stringToPropertySetterItemProvider = new StringToPropertySetterItemProvider(this);
+ }
+
+ return stringToPropertySetterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Layer} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerItemProvider layerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Layer}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerAdapter() {
+ if (layerItemProvider == null) {
+ layerItemProvider = new LayerItemProvider(this);
+ }
+
+ return layerItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Color} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ColorItemProvider colorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Color}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createColorAdapter() {
+ if (colorItemProvider == null) {
+ colorItemProvider = new ColorItemProvider(this);
+ }
+
+ return colorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ColorInstanceItemProvider colorInstanceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createColorInstanceAdapter() {
+ if (colorInstanceItemProvider == null) {
+ colorInstanceItemProvider = new ColorInstanceItemProvider(this);
+ }
+
+ return colorInstanceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FillInstanceItemProvider fillInstanceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFillInstanceAdapter() {
+ if (fillInstanceItemProvider == null) {
+ fillInstanceItemProvider = new FillInstanceItemProvider(this);
+ }
+
+ return fillInstanceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Fill} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FillItemProvider fillItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Fill}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFillAdapter() {
+ if (fillItemProvider == null) {
+ fillItemProvider = new FillItemProvider(this);
+ }
+
+ return fillItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FillPropertySetterItemProvider fillPropertySetterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFillPropertySetterAdapter() {
+ if (fillPropertySetterItemProvider == null) {
+ fillPropertySetterItemProvider = new FillPropertySetterItemProvider(this);
+ }
+
+ return fillPropertySetterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IsValidPropertySetterItemProvider isValidPropertySetterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIsValidPropertySetterAdapter() {
+ if (isValidPropertySetterItemProvider == null) {
+ isValidPropertySetterItemProvider = new IsValidPropertySetterItemProvider(this);
+ }
+
+ return isValidPropertySetterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NullPropertySetterItemProvider nullPropertySetterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createNullPropertySetterAdapter() {
+ if (nullPropertySetterItemProvider == null) {
+ nullPropertySetterItemProvider = new NullPropertySetterItemProvider(this);
+ }
+
+ return nullPropertySetterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LineType} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LineTypeItemProvider lineTypeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LineType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLineTypeAdapter() {
+ if (lineTypeItemProvider == null) {
+ lineTypeItemProvider = new LineTypeItemProvider(this);
+ }
+
+ return lineTypeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LineInstanceItemProvider lineInstanceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLineInstanceAdapter() {
+ if (lineInstanceItemProvider == null) {
+ lineInstanceItemProvider = new LineInstanceItemProvider(this);
+ }
+
+ return lineInstanceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LinePropertySetterItemProvider linePropertySetterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLinePropertySetterAdapter() {
+ if (linePropertySetterItemProvider == null) {
+ linePropertySetterItemProvider = new LinePropertySetterItemProvider(this);
+ }
+
+ return linePropertySetterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FontPropertySetterItemProvider fontPropertySetterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFontPropertySetterAdapter() {
+ if (fontPropertySetterItemProvider == null) {
+ fontPropertySetterItemProvider = new FontPropertySetterItemProvider(this);
+ }
+
+ return fontPropertySetterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FontInstanceItemProvider fontInstanceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFontInstanceAdapter() {
+ if (fontInstanceItemProvider == null) {
+ fontInstanceItemProvider = new FontInstanceItemProvider(this);
+ }
+
+ return fontInstanceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FontType} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FontTypeItemProvider fontTypeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFontTypeAdapter() {
+ if (fontTypeItemProvider == null) {
+ fontTypeItemProvider = new FontTypeItemProvider(this);
+ }
+
+ return fontTypeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IsVisiblePropertySetterItemProvider isVisiblePropertySetterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIsVisiblePropertySetterAdapter() {
+ if (isVisiblePropertySetterItemProvider == null) {
+ isVisiblePropertySetterItemProvider = new IsVisiblePropertySetterItemProvider(this);
+ }
+
+ return isVisiblePropertySetterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorDescriptorRegistryItemProvider layerOperatorDescriptorRegistryItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerOperatorDescriptorRegistryAdapter() {
+ if (layerOperatorDescriptorRegistryItemProvider == null) {
+ layerOperatorDescriptorRegistryItemProvider = new LayerOperatorDescriptorRegistryItemProvider(this);
+ }
+
+ return layerOperatorDescriptorRegistryItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TopLayerOperatorDescriptorItemProvider topLayerOperatorDescriptorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTopLayerOperatorDescriptorAdapter() {
+ if (topLayerOperatorDescriptorItemProvider == null) {
+ topLayerOperatorDescriptorItemProvider = new TopLayerOperatorDescriptorItemProvider(this);
+ }
+
+ return topLayerOperatorDescriptorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StackedLayerOperatorDescriptorItemProvider stackedLayerOperatorDescriptorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStackedLayerOperatorDescriptorAdapter() {
+ if (stackedLayerOperatorDescriptorItemProvider == null) {
+ stackedLayerOperatorDescriptorItemProvider = new StackedLayerOperatorDescriptorItemProvider(this);
+ }
+
+ return stackedLayerOperatorDescriptorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CustomPropertyOperatorItemProvider customPropertyOperatorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createCustomPropertyOperatorAdapter() {
+ if (customPropertyOperatorItemProvider == null) {
+ customPropertyOperatorItemProvider = new CustomPropertyOperatorItemProvider(this);
+ }
+
+ return customPropertyOperatorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AndStackedLayerOperatorDescriptorItemProvider andStackedLayerOperatorDescriptorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createAndStackedLayerOperatorDescriptorAdapter() {
+ if (andStackedLayerOperatorDescriptorItemProvider == null) {
+ andStackedLayerOperatorDescriptorItemProvider = new AndStackedLayerOperatorDescriptorItemProvider(this);
+ }
+
+ return andStackedLayerOperatorDescriptorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OrStackedLayerOperatorDescriptorItemProvider orStackedLayerOperatorDescriptorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createOrStackedLayerOperatorDescriptorAdapter() {
+ if (orStackedLayerOperatorDescriptorItemProvider == null) {
+ orStackedLayerOperatorDescriptorItemProvider = new OrStackedLayerOperatorDescriptorItemProvider(this);
+ }
+
+ return orStackedLayerOperatorDescriptorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IsAbstractUmlSetterItemProvider isAbstractUmlSetterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIsAbstractUmlSetterAdapter() {
+ if (isAbstractUmlSetterItemProvider == null) {
+ isAbstractUmlSetterItemProvider = new IsAbstractUmlSetterItemProvider(this);
+ }
+
+ return isAbstractUmlSetterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AllViewsDerivedLayerItemProvider allViewsDerivedLayerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createAllViewsDerivedLayerAdapter() {
+ if (allViewsDerivedLayerItemProvider == null) {
+ allViewsDerivedLayerItemProvider = new AllViewsDerivedLayerItemProvider(this);
+ }
+
+ return allViewsDerivedLayerItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToTypeInstanceMapItemProvider stringToTypeInstanceMapItemProvider;
+
+ /**
+ * This creates an adapter for a {@link java.util.Map.Entry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringToTypeInstanceMapAdapter() {
+ if (stringToTypeInstanceMapItemProvider == null) {
+ stringToTypeInstanceMapItemProvider = new StringToTypeInstanceMapItemProvider(this);
+ }
+
+ return stringToTypeInstanceMapItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Property} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyItemProvider propertyItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Property}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPropertyAdapter() {
+ if (propertyItemProvider == null) {
+ propertyItemProvider = new PropertyItemProvider(this);
+ }
+
+ return propertyItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MetamodelItemProvider metamodelItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createMetamodelAdapter() {
+ if (metamodelItemProvider == null) {
+ metamodelItemProvider = new MetamodelItemProvider(this);
+ }
+
+ return metamodelItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Folder} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FolderItemProvider folderItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Folder}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFolderAdapter() {
+ if (folderItemProvider == null) {
+ folderItemProvider = new FolderItemProvider(this);
+ }
+
+ return folderItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntInstanceItemProvider intInstanceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIntInstanceAdapter() {
+ if (intInstanceItemProvider == null) {
+ intInstanceItemProvider = new IntInstanceItemProvider(this);
+ }
+
+ return intInstanceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanInstanceItemProvider booleanInstanceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createBooleanInstanceAdapter() {
+ if (booleanInstanceItemProvider == null) {
+ booleanInstanceItemProvider = new BooleanInstanceItemProvider(this);
+ }
+
+ return booleanInstanceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringInstanceItemProvider stringInstanceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringInstanceAdapter() {
+ if (stringInstanceItemProvider == null) {
+ stringInstanceItemProvider = new StringInstanceItemProvider(this);
+ }
+
+ return stringInstanceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IntType} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntTypeItemProvider intTypeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IntType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIntTypeAdapter() {
+ if (intTypeItemProvider == null) {
+ intTypeItemProvider = new IntTypeItemProvider(this);
+ }
+
+ return intTypeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanTypeItemProvider booleanTypeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createBooleanTypeAdapter() {
+ if (booleanTypeItemProvider == null) {
+ booleanTypeItemProvider = new BooleanTypeItemProvider(this);
+ }
+
+ return booleanTypeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.StringType} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringTypeItemProvider stringTypeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StringType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringTypeAdapter() {
+ if (stringTypeItemProvider == null) {
+ stringTypeItemProvider = new StringTypeItemProvider(this);
+ }
+
+ return stringTypeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CustomTypeItemProvider customTypeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createCustomTypeAdapter() {
+ if (customTypeItemProvider == null) {
+ customTypeItemProvider = new CustomTypeItemProvider(this);
+ }
+
+ return customTypeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorDescriptorItemProvider layerOperatorDescriptorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerOperatorDescriptorAdapter() {
+ if (layerOperatorDescriptorItemProvider == null) {
+ layerOperatorDescriptorItemProvider = new LayerOperatorDescriptorItemProvider(this);
+ }
+
+ return layerOperatorDescriptorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyOperatorItemProvider propertyOperatorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPropertyOperatorAdapter() {
+ if (propertyOperatorItemProvider == null) {
+ propertyOperatorItemProvider = new PropertyOperatorItemProvider(this);
+ }
+
+ return propertyOperatorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DefaultPropertyOperatorItemProvider defaultPropertyOperatorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDefaultPropertyOperatorAdapter() {
+ if (defaultPropertyOperatorItemProvider == null) {
+ defaultPropertyOperatorItemProvider = new DefaultPropertyOperatorItemProvider(this);
+ }
+
+ return defaultPropertyOperatorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersStackApplicationItemProvider layersStackApplicationItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayersStackApplicationAdapter() {
+ if (layersStackApplicationItemProvider == null) {
+ layersStackApplicationItemProvider = new LayersStackApplicationItemProvider(this);
+ }
+
+ return layersStackApplicationItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerStackDescriptorRegistryItemProvider layerStackDescriptorRegistryItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerStackDescriptorRegistryAdapter() {
+ if (layerStackDescriptorRegistryItemProvider == null) {
+ layerStackDescriptorRegistryItemProvider = new LayerStackDescriptorRegistryItemProvider(this);
+ }
+
+ return layerStackDescriptorRegistryItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyRegistryItemProvider propertyRegistryItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPropertyRegistryAdapter() {
+ if (propertyRegistryItemProvider == null) {
+ propertyRegistryItemProvider = new PropertyRegistryItemProvider(this);
+ }
+
+ return propertyRegistryItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToPropertyIndexMapItemProvider stringToPropertyIndexMapItemProvider;
+
+ /**
+ * This creates an adapter for a {@link java.util.Map.Entry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringToPropertyIndexMapAdapter() {
+ if (stringToPropertyIndexMapItemProvider == null) {
+ stringToPropertyIndexMapItemProvider = new StringToPropertyIndexMapItemProvider(this);
+ }
+
+ return stringToPropertyIndexMapItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SimpleLayerDescriptorItemProvider simpleLayerDescriptorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSimpleLayerDescriptorAdapter() {
+ if (simpleLayerDescriptorItemProvider == null) {
+ simpleLayerDescriptorItemProvider = new SimpleLayerDescriptorItemProvider(this);
+ }
+
+ return simpleLayerDescriptorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RegExpLayerDescriptorItemProvider regExpLayerDescriptorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createRegExpLayerDescriptorAdapter() {
+ if (regExpLayerDescriptorItemProvider == null) {
+ regExpLayerDescriptorItemProvider = new RegExpLayerDescriptorItemProvider(this);
+ }
+
+ return regExpLayerDescriptorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NullInstanceItemProvider nullInstanceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createNullInstanceAdapter() {
+ if (nullInstanceItemProvider == null) {
+ nullInstanceItemProvider = new NullInstanceItemProvider(this);
+ }
+
+ return nullInstanceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RegExpLayerItemProvider regExpLayerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createRegExpLayerAdapter() {
+ if (regExpLayerItemProvider == null) {
+ regExpLayerItemProvider = new RegExpLayerItemProvider(this);
+ }
+
+ return regExpLayerItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyIndexItemProvider propertyIndexItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPropertyIndexAdapter() {
+ if (propertyIndexItemProvider == null) {
+ propertyIndexItemProvider = new PropertyIndexItemProvider(this);
+ }
+
+ return propertyIndexItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeRegistryItemProvider typeRegistryItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTypeRegistryAdapter() {
+ if (typeRegistryItemProvider == null) {
+ typeRegistryItemProvider = new TypeRegistryItemProvider(this);
+ }
+
+ return typeRegistryItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToTypeMapItemProvider stringToTypeMapItemProvider;
+
+ /**
+ * This creates an adapter for a {@link java.util.Map.Entry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringToTypeMapAdapter() {
+ if (stringToTypeMapItemProvider == null) {
+ stringToTypeMapItemProvider = new StringToTypeMapItemProvider(this);
+ }
+
+ return stringToTypeMapItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerDescriptorRegistryItemProvider layerDescriptorRegistryItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLayerDescriptorRegistryAdapter() {
+ if (layerDescriptorRegistryItemProvider == null) {
+ layerDescriptorRegistryItemProvider = new LayerDescriptorRegistryItemProvider(this);
+ }
+
+ return layerDescriptorRegistryItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TopLayerOperatorItemProvider topLayerOperatorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTopLayerOperatorAdapter() {
+ if (topLayerOperatorItemProvider == null) {
+ topLayerOperatorItemProvider = new TopLayerOperatorItemProvider(this);
+ }
+
+ return topLayerOperatorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StackedLayerOperatorItemProvider stackedLayerOperatorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStackedLayerOperatorAdapter() {
+ if (stackedLayerOperatorItemProvider == null) {
+ stackedLayerOperatorItemProvider = new StackedLayerOperatorItemProvider(this);
+ }
+
+ return stackedLayerOperatorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CustomLayerOperatorItemProvider customLayerOperatorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createCustomLayerOperatorAdapter() {
+ if (customLayerOperatorItemProvider == null) {
+ customLayerOperatorItemProvider = new CustomLayerOperatorItemProvider(this);
+ }
+
+ return customLayerOperatorItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (layerNamedStyleItemProvider != null) layerNamedStyleItemProvider.dispose();
+ if (layersStackItemProvider != null) layersStackItemProvider.dispose();
+ if (layersStackApplicationItemProvider != null) layersStackApplicationItemProvider.dispose();
+ if (layerStackDescriptorRegistryItemProvider != null) layerStackDescriptorRegistryItemProvider.dispose();
+ if (propertyRegistryItemProvider != null) propertyRegistryItemProvider.dispose();
+ if (propertyItemProvider != null) propertyItemProvider.dispose();
+ if (metamodelItemProvider != null) metamodelItemProvider.dispose();
+ if (typeRegistryItemProvider != null) typeRegistryItemProvider.dispose();
+ if (stringToTypeMapItemProvider != null) stringToTypeMapItemProvider.dispose();
+ if (layerDescriptorRegistryItemProvider != null) layerDescriptorRegistryItemProvider.dispose();
+ if (layerDescriptorItemProvider != null) layerDescriptorItemProvider.dispose();
+ if (layerApplicationFactoryItemProvider != null) layerApplicationFactoryItemProvider.dispose();
+ if (propertySetterRegistryItemProvider != null) propertySetterRegistryItemProvider.dispose();
+ if (stringToPropertySetterItemProvider != null) stringToPropertySetterItemProvider.dispose();
+ if (layerOperatorDescriptorRegistryItemProvider != null) layerOperatorDescriptorRegistryItemProvider.dispose();
+ if (layerOperatorDescriptorItemProvider != null) layerOperatorDescriptorItemProvider.dispose();
+ if (propertyOperatorItemProvider != null) propertyOperatorItemProvider.dispose();
+ if (defaultPropertyOperatorItemProvider != null) defaultPropertyOperatorItemProvider.dispose();
+ if (stringToTypeInstanceMapItemProvider != null) stringToTypeInstanceMapItemProvider.dispose();
+ if (folderItemProvider != null) folderItemProvider.dispose();
+ if (intInstanceItemProvider != null) intInstanceItemProvider.dispose();
+ if (booleanInstanceItemProvider != null) booleanInstanceItemProvider.dispose();
+ if (stringInstanceItemProvider != null) stringInstanceItemProvider.dispose();
+ if (intTypeItemProvider != null) intTypeItemProvider.dispose();
+ if (booleanTypeItemProvider != null) booleanTypeItemProvider.dispose();
+ if (stringTypeItemProvider != null) stringTypeItemProvider.dispose();
+ if (customTypeItemProvider != null) customTypeItemProvider.dispose();
+ if (topLayerOperatorItemProvider != null) topLayerOperatorItemProvider.dispose();
+ if (stackedLayerOperatorItemProvider != null) stackedLayerOperatorItemProvider.dispose();
+ if (customLayerOperatorItemProvider != null) customLayerOperatorItemProvider.dispose();
+ if (propertyIndexItemProvider != null) propertyIndexItemProvider.dispose();
+ if (stringToPropertyIndexMapItemProvider != null) stringToPropertyIndexMapItemProvider.dispose();
+ if (simpleLayerDescriptorItemProvider != null) simpleLayerDescriptorItemProvider.dispose();
+ if (regExpLayerDescriptorItemProvider != null) regExpLayerDescriptorItemProvider.dispose();
+ if (nullInstanceItemProvider != null) nullInstanceItemProvider.dispose();
+ if (regExpLayerItemProvider != null) regExpLayerItemProvider.dispose();
+ if (layerItemProvider != null) layerItemProvider.dispose();
+ if (colorItemProvider != null) colorItemProvider.dispose();
+ if (colorInstanceItemProvider != null) colorInstanceItemProvider.dispose();
+ if (fillInstanceItemProvider != null) fillInstanceItemProvider.dispose();
+ if (fillItemProvider != null) fillItemProvider.dispose();
+ if (fillPropertySetterItemProvider != null) fillPropertySetterItemProvider.dispose();
+ if (isValidPropertySetterItemProvider != null) isValidPropertySetterItemProvider.dispose();
+ if (nullPropertySetterItemProvider != null) nullPropertySetterItemProvider.dispose();
+ if (lineTypeItemProvider != null) lineTypeItemProvider.dispose();
+ if (lineInstanceItemProvider != null) lineInstanceItemProvider.dispose();
+ if (linePropertySetterItemProvider != null) linePropertySetterItemProvider.dispose();
+ if (fontPropertySetterItemProvider != null) fontPropertySetterItemProvider.dispose();
+ if (fontInstanceItemProvider != null) fontInstanceItemProvider.dispose();
+ if (fontTypeItemProvider != null) fontTypeItemProvider.dispose();
+ if (isVisiblePropertySetterItemProvider != null) isVisiblePropertySetterItemProvider.dispose();
+ if (topLayerOperatorDescriptorItemProvider != null) topLayerOperatorDescriptorItemProvider.dispose();
+ if (stackedLayerOperatorDescriptorItemProvider != null) stackedLayerOperatorDescriptorItemProvider.dispose();
+ if (customPropertyOperatorItemProvider != null) customPropertyOperatorItemProvider.dispose();
+ if (andStackedLayerOperatorDescriptorItemProvider != null) andStackedLayerOperatorDescriptorItemProvider.dispose();
+ if (orStackedLayerOperatorDescriptorItemProvider != null) orStackedLayerOperatorDescriptorItemProvider.dispose();
+ if (isAbstractUmlSetterItemProvider != null) isAbstractUmlSetterItemProvider.dispose();
+ if (allViewsDerivedLayerItemProvider != null) allViewsDerivedLayerItemProvider.dispose();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackApplicationItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackApplicationItemProvider.java
new file mode 100644
index 00000000000..90f794527f0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackApplicationItemProvider.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersStackApplicationItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStackApplicationItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYERS_STACKS);
+ childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY);
+ childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY);
+ childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY);
+ childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__FACTORY);
+ childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY);
+ childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns LayersStackApplication.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayersStackApplication"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_LayersStackApplication_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LayersStackApplication.class)) {
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+ case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYERS_STACKS,
+ LayersFactory.eINSTANCE.createLayersStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY,
+ LayersFactory.eINSTANCE.createLayerStackDescriptorRegistry()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY,
+ LayersFactory.eINSTANCE.createPropertyRegistry()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY,
+ LayersFactory.eINSTANCE.createLayerDescriptorRegistry()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK_APPLICATION__FACTORY,
+ LayersFactory.eINSTANCE.createLayerApplicationFactory()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY,
+ LayersFactory.eINSTANCE.createPropertySetterRegistry()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY,
+ LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry()));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackItemProvider.java
new file mode 100644
index 00000000000..40b370c347e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackItemProvider.java
@@ -0,0 +1,308 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersStackItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStackItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ addDiagramPropertyDescriptor(object);
+ addStatePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayersStack_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayersStack_name_feature", "_UI_LayersStack_type"),
+ LayersPackage.Literals.LAYERS_STACK__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayersStack_description_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayersStack_description_feature", "_UI_LayersStack_type"),
+ LayersPackage.Literals.LAYERS_STACK__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Diagram feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDiagramPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayersStack_diagram_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayersStack_diagram_feature", "_UI_LayersStack_type"),
+ LayersPackage.Literals.LAYERS_STACK__DIAGRAM,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the State feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addStatePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LayersStack_state_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LayersStack_state_feature", "_UI_LayersStack_type"),
+ LayersPackage.Literals.LAYERS_STACK__STATE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK__LAYERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns LayersStack.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LayersStack"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ LayersStack stack = (LayersStack)object;
+ String label = ((LayersStack)object).getName();
+
+ if( label == null || label.length() == 0) {
+ try {
+ label = stack.getDiagram().getName();
+ } catch (NullPointerException e) {
+ return getString("_UI_LayersStack_type");
+ }
+ }
+
+ return "Stack " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LayersStack.class)) {
+ case LayersPackage.LAYERS_STACK__NAME:
+ case LayersPackage.LAYERS_STACK__DESCRIPTION:
+ case LayersPackage.LAYERS_STACK__STATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.LAYERS_STACK__LAYERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK__LAYERS,
+ LayersFactory.eINSTANCE.createTopLayerOperator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK__LAYERS,
+ LayersFactory.eINSTANCE.createStackedLayerOperator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK__LAYERS,
+ LayersFactory.eINSTANCE.createCustomLayerOperator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK__LAYERS,
+ LayersFactory.eINSTANCE.createRegExpLayer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK__LAYERS,
+ LayersFactory.eINSTANCE.createLayer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.LAYERS_STACK__LAYERS,
+ LayersFactory.eINSTANCE.createAllViewsDerivedLayer()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineInstanceItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineInstanceItemProvider.java
new file mode 100644
index 00000000000..3bc3923576a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineInstanceItemProvider.java
@@ -0,0 +1,175 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LineInstanceItemProvider
+ extends TypeInstanceItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LineInstanceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addLineColorPropertyDescriptor(object);
+ addLineWithPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Line Color feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLineColorPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LineInstance_lineColor_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LineInstance_lineColor_feature", "_UI_LineInstance_type"),
+ LayersPackage.Literals.LINE_INSTANCE__LINE_COLOR,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Line With feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLineWithPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LineInstance_lineWith_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_LineInstance_lineWith_feature", "_UI_LineInstance_type"),
+ LayersPackage.Literals.LINE_INSTANCE__LINE_WITH,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns LineInstance.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LineInstance"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ LineInstance lineInstance = (LineInstance)object;
+ return getString("_UI_LineInstance_type") + " " + lineInstance.getLineColor();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LineInstance.class)) {
+ case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+ case LayersPackage.LINE_INSTANCE__LINE_WITH:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LinePropertySetterItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LinePropertySetterItemProvider.java
new file mode 100644
index 00000000000..020255d92a2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LinePropertySetterItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LinePropertySetterItemProvider
+ extends PropertySetterItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LinePropertySetterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns LinePropertySetter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LinePropertySetter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LinePropertySetter)object).getPropertyName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LinePropertySetter_type") :
+ getString("_UI_LinePropertySetter_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineTypeItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineTypeItemProvider.java
new file mode 100644
index 00000000000..703f5dc4ff4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineTypeItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LineType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LineTypeItemProvider
+ extends TypeItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LineTypeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns LineType.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/LineType"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LineType)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LineType_type") :
+ getString("_UI_LineType_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/MetamodelItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/MetamodelItemProvider.java
new file mode 100644
index 00000000000..8a93b10cefd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/MetamodelItemProvider.java
@@ -0,0 +1,273 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MetamodelItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MetamodelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ addNsuriPropertyDescriptor(object);
+ addPluginIDPropertyDescriptor(object);
+ addEPackageInstanceNamePropertyDescriptor(object);
+ addIsTypeValidPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Metamodel_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_name_feature", "_UI_Metamodel_type"),
+ LayersPackage.Literals.METAMODEL__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Metamodel_description_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_description_feature", "_UI_Metamodel_type"),
+ LayersPackage.Literals.METAMODEL__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Nsuri feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNsuriPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Metamodel_nsuri_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_nsuri_feature", "_UI_Metamodel_type"),
+ LayersPackage.Literals.METAMODEL__NSURI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Plugin ID feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPluginIDPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Metamodel_pluginID_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_pluginID_feature", "_UI_Metamodel_type"),
+ LayersPackage.Literals.METAMODEL__PLUGIN_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the EPackage Instance Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEPackageInstanceNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Metamodel_ePackageInstanceName_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_ePackageInstanceName_feature", "_UI_Metamodel_type"),
+ LayersPackage.Literals.METAMODEL__EPACKAGE_INSTANCE_NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Is Type Valid feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIsTypeValidPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Metamodel_isTypeValid_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_isTypeValid_feature", "_UI_Metamodel_type"),
+ LayersPackage.Literals.METAMODEL__IS_TYPE_VALID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Metamodel.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Metamodel"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Metamodel)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Metamodel_type") :
+ getString("_UI_Metamodel_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Metamodel.class)) {
+ case LayersPackage.METAMODEL__NAME:
+ case LayersPackage.METAMODEL__DESCRIPTION:
+ case LayersPackage.METAMODEL__NSURI:
+ case LayersPackage.METAMODEL__PLUGIN_ID:
+ case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+ case LayersPackage.METAMODEL__IS_TYPE_VALID:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullInstanceItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullInstanceItemProvider.java
new file mode 100644
index 00000000000..4150f3f19f3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullInstanceItemProvider.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NullInstanceItemProvider
+ extends TypeInstanceItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullInstanceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns NullInstance.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/NullInstance"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_NullInstance_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullPropertySetterItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullPropertySetterItemProvider.java
new file mode 100644
index 00000000000..224face1a6d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullPropertySetterItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NullPropertySetterItemProvider
+ extends PropertySetterItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullPropertySetterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns NullPropertySetter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/NullPropertySetter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((NullPropertySetter)object).getPropertyName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_NullPropertySetter_type") :
+ getString("_UI_NullPropertySetter_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/OrStackedLayerOperatorDescriptorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/OrStackedLayerOperatorDescriptorItemProvider.java
new file mode 100644
index 00000000000..c9c4849ccb3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/OrStackedLayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OrStackedLayerOperatorDescriptorItemProvider
+ extends StackedLayerOperatorDescriptorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrStackedLayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns OrStackedLayerOperatorDescriptor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/OrStackedLayerOperatorDescriptor"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((OrStackedLayerOperatorDescriptor)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_OrStackedLayerOperatorDescriptor_type") :
+ getString("_UI_OrStackedLayerOperatorDescriptor_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyIndexItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyIndexItemProvider.java
new file mode 100644
index 00000000000..0ee932145c8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyIndexItemProvider.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertyIndexItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyIndexItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addPropertyPropertyDescriptor(object);
+ addIndexPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Property feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPropertyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PropertyIndex_property_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_PropertyIndex_property_feature", "_UI_PropertyIndex_type"),
+ LayersPackage.Literals.PROPERTY_INDEX__PROPERTY,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Index feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIndexPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PropertyIndex_index_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_PropertyIndex_index_feature", "_UI_PropertyIndex_type"),
+ LayersPackage.Literals.PROPERTY_INDEX__INDEX,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns PropertyIndex.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyIndex"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ PropertyIndex propertyIndex = (PropertyIndex)object;
+ return getString("_UI_PropertyIndex_type") + " " + propertyIndex.getIndex();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(PropertyIndex.class)) {
+ case LayersPackage.PROPERTY_INDEX__INDEX:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyItemProvider.java
new file mode 100644
index 00000000000..3a2deab6711
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyItemProvider.java
@@ -0,0 +1,300 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Property} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertyItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addTypePropertyDescriptor(object);
+ addNamePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ addIndexPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Property_type_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Property_type_feature", "_UI_Property_type"),
+ LayersPackage.Literals.PROPERTY__TYPE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Property_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Property_name_feature", "_UI_Property_type"),
+ LayersPackage.Literals.PROPERTY__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Property_description_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Property_description_feature", "_UI_Property_type"),
+ LayersPackage.Literals.PROPERTY__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Index feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIndexPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Property_index_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Property_index_feature", "_UI_Property_type"),
+ LayersPackage.Literals.PROPERTY__INDEX,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Property.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Property"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Property)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Property_type") :
+ getString("_UI_Property_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Property.class)) {
+ case LayersPackage.PROPERTY__NAME:
+ case LayersPackage.PROPERTY__DESCRIPTION:
+ case LayersPackage.PROPERTY__INDEX:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.PROPERTY__DEFAULT_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+ LayersFactory.eINSTANCE.createIntInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+ LayersFactory.eINSTANCE.createBooleanInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+ LayersFactory.eINSTANCE.createStringInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+ LayersFactory.eINSTANCE.createNullInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+ LayersFactory.eINSTANCE.createColorInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+ LayersFactory.eINSTANCE.createFillInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+ LayersFactory.eINSTANCE.createLineInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+ LayersFactory.eINSTANCE.createFontInstance()));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyOperatorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyOperatorItemProvider.java
new file mode 100644
index 00000000000..648a009cc9e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyOperatorItemProvider.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertyOperatorItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PropertyOperator_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_PropertyOperator_name_feature", "_UI_PropertyOperator_type"),
+ LayersPackage.Literals.PROPERTY_OPERATOR__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns PropertyOperator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyOperator"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((PropertyOperator)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_PropertyOperator_type") :
+ getString("_UI_PropertyOperator_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(PropertyOperator.class)) {
+ case LayersPackage.PROPERTY_OPERATOR__NAME:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyRegistryItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyRegistryItemProvider.java
new file mode 100644
index 00000000000..35ffdae5665
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyRegistryItemProvider.java
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertyRegistryItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyRegistryItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addPropertiesCountPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Properties Count feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPropertiesCountPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PropertyRegistry_propertiesCount_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_PropertyRegistry_propertiesCount_feature", "_UI_PropertyRegistry_type"),
+ LayersPackage.Literals.PROPERTY_REGISTRY__PROPERTIES_COUNT,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.PROPERTY_REGISTRY__PROPERTIES);
+ childrenFeatures.add(LayersPackage.Literals.PROPERTY_REGISTRY__TYPE_REGISTRY);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns PropertyRegistry.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyRegistry"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ PropertyRegistry propertyRegistry = (PropertyRegistry)object;
+ return getString("_UI_PropertyRegistry_type") + " " + propertyRegistry.getPropertiesCount();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(PropertyRegistry.class)) {
+ case LayersPackage.PROPERTY_REGISTRY__PROPERTIES_COUNT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+ case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_REGISTRY__PROPERTIES,
+ LayersFactory.eINSTANCE.createProperty()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_REGISTRY__TYPE_REGISTRY,
+ LayersFactory.eINSTANCE.createTypeRegistry()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterItemProvider.java
new file mode 100644
index 00000000000..4fb2774c86a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterItemProvider.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertySetterItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertySetterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addPropertyPropertyDescriptor(object);
+ addPropertyNamePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Property feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPropertyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PropertySetter_property_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_PropertySetter_property_feature", "_UI_PropertySetter_type"),
+ LayersPackage.Literals.PROPERTY_SETTER__PROPERTY,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Property Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPropertyNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PropertySetter_propertyName_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_PropertySetter_propertyName_feature", "_UI_PropertySetter_type"),
+ LayersPackage.Literals.PROPERTY_SETTER__PROPERTY_NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns PropertySetter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertySetter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((PropertySetter)object).getPropertyName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_PropertySetter_type") :
+ getString("_UI_PropertySetter_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(PropertySetter.class)) {
+ case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterRegistryItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterRegistryItemProvider.java
new file mode 100644
index 00000000000..59452430491
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterRegistryItemProvider.java
@@ -0,0 +1,214 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertySetterRegistryItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertySetterRegistryItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS);
+ childrenFeatures.add(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__SETTER_MAP);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns PropertySetterRegistry.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertySetterRegistry"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_PropertySetterRegistry_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(PropertySetterRegistry.class)) {
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+ LayersFactory.eINSTANCE.createFillPropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+ LayersFactory.eINSTANCE.createIsValidPropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+ LayersFactory.eINSTANCE.createNullPropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+ LayersFactory.eINSTANCE.createLinePropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+ LayersFactory.eINSTANCE.createFontPropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+ LayersFactory.eINSTANCE.createIsVisiblePropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+ LayersFactory.eINSTANCE.createIsAbstractUmlSetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__SETTER_MAP,
+ LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER)));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerDescriptorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerDescriptorItemProvider.java
new file mode 100644
index 00000000000..23153abf92b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerDescriptorItemProvider.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RegExpLayerDescriptorItemProvider
+ extends LayerDescriptorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RegExpLayerDescriptorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns RegExpLayerDescriptor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/RegExpLayerDescriptor"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_RegExpLayerDescriptor_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerItemProvider.java
new file mode 100644
index 00000000000..d9ee240b1ca
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerItemProvider.java
@@ -0,0 +1,297 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RegExpLayerItemProvider
+ extends AbstractLayerItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RegExpLayerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addExprPropertyDescriptor(object);
+ addLanguagePropertyDescriptor(object);
+ addIsDomainChangedEventDependantPropertyDescriptor(object);
+ addDomainChangedEventLevelPropertyDescriptor(object);
+ addIsDiagramChangedEventDependantPropertyDescriptor(object);
+ addDiagramChangedEventLevelPropertyDescriptor(object);
+ addExpressionContextObjectTypePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Expr feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addExprPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_RegExpLayer_expr_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_expr_feature", "_UI_RegExpLayer_type"),
+ LayersPackage.Literals.REG_EXP_LAYER__EXPR,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Language feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLanguagePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_RegExpLayer_language_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_language_feature", "_UI_RegExpLayer_type"),
+ LayersPackage.Literals.REG_EXP_LAYER__LANGUAGE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Is Domain Changed Event Dependant feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIsDomainChangedEventDependantPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_RegExpLayer_isDomainChangedEventDependant_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_isDomainChangedEventDependant_feature", "_UI_RegExpLayer_type"),
+ LayersPackage.Literals.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Domain Changed Event Level feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDomainChangedEventLevelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_RegExpLayer_domainChangedEventLevel_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_domainChangedEventLevel_feature", "_UI_RegExpLayer_type"),
+ LayersPackage.Literals.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Is Diagram Changed Event Dependant feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIsDiagramChangedEventDependantPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_RegExpLayer_isDiagramChangedEventDependant_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_isDiagramChangedEventDependant_feature", "_UI_RegExpLayer_type"),
+ LayersPackage.Literals.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Diagram Changed Event Level feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDiagramChangedEventLevelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_RegExpLayer_diagramChangedEventLevel_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_diagramChangedEventLevel_feature", "_UI_RegExpLayer_type"),
+ LayersPackage.Literals.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Expression Context Object Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addExpressionContextObjectTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_RegExpLayer_expressionContextObjectType_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_expressionContextObjectType_feature", "_UI_RegExpLayer_type"),
+ LayersPackage.Literals.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns RegExpLayer.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/RegExpLayer"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((RegExpLayer)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_RegExpLayer_type") :
+ getString("_UI_RegExpLayer_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(RegExpLayer.class)) {
+ case LayersPackage.REG_EXP_LAYER__EXPR:
+ case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+ case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+ case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+ case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+ case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+ case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/SimpleLayerDescriptorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/SimpleLayerDescriptorItemProvider.java
new file mode 100644
index 00000000000..aeecea600cb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/SimpleLayerDescriptorItemProvider.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SimpleLayerDescriptorItemProvider
+ extends LayerDescriptorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleLayerDescriptorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns SimpleLayerDescriptor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/SimpleLayerDescriptor"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_SimpleLayerDescriptor_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorDescriptorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorDescriptorItemProvider.java
new file mode 100644
index 00000000000..546abbc8a1b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StackedLayerOperatorDescriptorItemProvider
+ extends LayerOperatorDescriptorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StackedLayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns StackedLayerOperatorDescriptor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StackedLayerOperatorDescriptor"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((StackedLayerOperatorDescriptor)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StackedLayerOperatorDescriptor_type") :
+ getString("_UI_StackedLayerOperatorDescriptor_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorItemProvider.java
new file mode 100644
index 00000000000..0becaefb265
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorItemProvider.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StackedLayerOperatorItemProvider
+ extends AbstractLayerOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StackedLayerOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns StackedLayerOperator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StackedLayerOperator"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+// String label = ((StackedLayerOperator)object).getName();
+// return label == null || label.length() == 0 ?
+// getString("_UI_StackedLayerOperator_type") :
+// getString("_UI_StackedLayerOperator_type") + " " + label;
+
+ // Actually, we use an StackedLayerOperator as a concrete class for every type of layer operator
+ // (to be changed))
+ AbstractLayerOperator layer = ((AbstractLayerOperator)object);
+ if (!layer.isDescriptorSet()) {
+ // Original behavior
+ String label = ((AbstractLayerOperator)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_AbstractLayerOperator_type") :
+ getString("_UI_AbstractLayerOperator_type") + " " + label;
+ }
+
+ // Custom behavior
+ String label = layer.getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_AbstractLayerOperator_type") :
+ getString("_UI_AbstractLayerOperator_type") + " (" + layer.getLayerOperatorDescriptor().getName() + ") " + label;
+
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringInstanceItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringInstanceItemProvider.java
new file mode 100644
index 00000000000..0c36195c0c4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringInstanceItemProvider.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringInstanceItemProvider
+ extends TypeInstanceItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringInstanceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringInstance_value_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_StringInstance_value_feature", "_UI_StringInstance_type"),
+ LayersPackage.Literals.STRING_INSTANCE__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns StringInstance.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StringInstance"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((StringInstance)object).getValue();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StringInstance_type") :
+ getString("_UI_StringInstance_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(StringInstance.class)) {
+ case LayersPackage.STRING_INSTANCE__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertyIndexMapItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertyIndexMapItemProvider.java
new file mode 100644
index 00000000000..95bde185b88
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertyIndexMapItemProvider.java
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToPropertyIndexMapItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToPropertyIndexMapItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addKeyPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Key feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addKeyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringToPropertyIndexMap_key_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_StringToPropertyIndexMap_key_feature", "_UI_StringToPropertyIndexMap_type"),
+ LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP__KEY,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP__VALUE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns StringToPropertyIndexMap.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToPropertyIndexMap"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ Map.Entry<?, ?> stringToPropertyIndexMap = (Map.Entry<?, ?>)object;
+ return "" + stringToPropertyIndexMap.getKey() + " -> " + stringToPropertyIndexMap.getValue();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Map.Entry.class)) {
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP__VALUE,
+ LayersFactory.eINSTANCE.createPropertyIndex()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertySetterItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertySetterItemProvider.java
new file mode 100644
index 00000000000..128491d9b0f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertySetterItemProvider.java
@@ -0,0 +1,236 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToPropertySetterItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToPropertySetterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addKeyPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Key feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addKeyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringToPropertySetter_key_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_StringToPropertySetter_key_feature", "_UI_StringToPropertySetter_type"),
+ LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__KEY,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns StringToPropertySetter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToPropertySetter"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ Map.Entry<?, ?> stringToPropertySetter = (Map.Entry<?, ?>)object;
+ return "" + stringToPropertySetter.getKey() + " -> " + stringToPropertySetter.getValue();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Map.Entry.class)) {
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+ LayersFactory.eINSTANCE.createFillPropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+ LayersFactory.eINSTANCE.createIsValidPropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+ LayersFactory.eINSTANCE.createNullPropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+ LayersFactory.eINSTANCE.createLinePropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+ LayersFactory.eINSTANCE.createFontPropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+ LayersFactory.eINSTANCE.createIsVisiblePropertySetter()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+ LayersFactory.eINSTANCE.createIsAbstractUmlSetter()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeInstanceMapItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeInstanceMapItemProvider.java
new file mode 100644
index 00000000000..ecdaea13ada
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeInstanceMapItemProvider.java
@@ -0,0 +1,240 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToTypeInstanceMapItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToTypeInstanceMapItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addKeyPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Key feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addKeyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringToTypeInstanceMap_key_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_StringToTypeInstanceMap_key_feature", "_UI_StringToTypeInstanceMap_type"),
+ LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__KEY,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns StringToTypeInstanceMap.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToTypeInstanceMap"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ Map.Entry<?, ?> stringToTypeInstanceMap = (Map.Entry<?, ?>)object;
+// return "" + stringToTypeInstanceMap.getKey() + " -> " + stringToTypeInstanceMap.getValue();
+
+// TypeInstance instance = (TypeInstance)stringToTypeInstanceMap.getValue();
+
+ return "Property '" + stringToTypeInstanceMap.getKey() + "'";
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Map.Entry.class)) {
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createIntInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createBooleanInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createStringInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createNullInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createColorInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createFillInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createLineInstance()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createFontInstance()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeMapItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeMapItemProvider.java
new file mode 100644
index 00000000000..21fcc5031fe
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeMapItemProvider.java
@@ -0,0 +1,241 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToTypeMapItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToTypeMapItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addKeyPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Key feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addKeyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringToTypeMap_key_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_StringToTypeMap_key_feature", "_UI_StringToTypeMap_type"),
+ LayersPackage.Literals.STRING_TO_TYPE_MAP__KEY,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns StringToTypeMap.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToTypeMap"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ Map.Entry<?, ?> stringToTypeMap = (Map.Entry<?, ?>)object;
+ return "" + stringToTypeMap.getKey() + " -> " + stringToTypeMap.getValue();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Map.Entry.class)) {
+ case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createIntType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createBooleanType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createStringType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createCustomType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createColor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createFill()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createLineType()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+ LayersFactory.eINSTANCE.createFontType()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringTypeItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringTypeItemProvider.java
new file mode 100644
index 00000000000..1d84c145597
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringTypeItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StringType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringTypeItemProvider
+ extends TypeItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringTypeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns StringType.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StringType"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((StringType)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StringType_type") :
+ getString("_UI_StringType_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorDescriptorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorDescriptorItemProvider.java
new file mode 100644
index 00000000000..72941249835
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TopLayerOperatorDescriptorItemProvider
+ extends LayerOperatorDescriptorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TopLayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns TopLayerOperatorDescriptor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/TopLayerOperatorDescriptor"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((TopLayerOperatorDescriptor)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_TopLayerOperatorDescriptor_type") :
+ getString("_UI_TopLayerOperatorDescriptor_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorItemProvider.java
new file mode 100644
index 00000000000..ab3ca7ee74d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorItemProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TopLayerOperatorItemProvider
+ extends AbstractLayerOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TopLayerOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns TopLayerOperator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/TopLayerOperator"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((TopLayerOperator)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_TopLayerOperator_type") :
+ getString("_UI_TopLayerOperator_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeInstanceItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeInstanceItemProvider.java
new file mode 100644
index 00000000000..66afd0d9410
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeInstanceItemProvider.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypeInstanceItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeInstanceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_TypeInstance_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeItemProvider.java
new file mode 100644
index 00000000000..c4c7fd6d78d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeItemProvider.java
@@ -0,0 +1,189 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Type} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypeItemProvider
+ extends FolderElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addMetamodelPropertyDescriptor(object);
+ addNamePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Metamodel feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addMetamodelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Type_metamodel_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Type_metamodel_feature", "_UI_Type_type"),
+ LayersPackage.Literals.TYPE__METAMODEL,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Type_name_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Type_name_feature", "_UI_Type_type"),
+ LayersPackage.Literals.TYPE__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Type_description_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_Type_description_feature", "_UI_Type_type"),
+ LayersPackage.Literals.TYPE__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((Type)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Type_type") :
+ getString("_UI_Type_type") + " " + label;
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Type.class)) {
+ case LayersPackage.TYPE__NAME:
+ case LayersPackage.TYPE__DESCRIPTION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeRegistryItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeRegistryItemProvider.java
new file mode 100644
index 00000000000..71dadcb28f9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeRegistryItemProvider.java
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypeRegistryItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeRegistryItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LayersPackage.Literals.TYPE_REGISTRY__TYPES);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns TypeRegistry.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/TypeRegistry"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_TypeRegistry_type");
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(TypeRegistry.class)) {
+ case LayersPackage.TYPE_REGISTRY__TYPES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LayersPackage.Literals.TYPE_REGISTRY__TYPES,
+ LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_TYPE_MAP)));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return LayersEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/CustomLayersItemProviderAdapterFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/CustomLayersItemProviderAdapterFactory.java
new file mode 100644
index 00000000000..f5d7bcaace8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/CustomLayersItemProviderAdapterFactory.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.provider.custom;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory;
+
+
+/**
+ * A custom {@link LayersItemProviderAdapterFactory} used to render layers element
+ * in a tree.
+ * This factory and its oveloaded Providers removed extra nodes in the tree.
+ *
+ * <br>
+ * To use a custom Providers, it is necessary to create it in this factory.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CustomLayersItemProviderAdapterFactory extends LayersItemProviderAdapterFactory {
+
+ /**
+ * Constructor.
+ *
+ */
+ public CustomLayersItemProviderAdapterFactory() {
+ // TODO Auto-generated constructor stub
+ }
+
+
+ @Override
+ public Adapter createLayersStackApplicationAdapter() {
+ if (layersStackApplicationItemProvider == null) {
+ layersStackApplicationItemProvider = new LayersStackApplicationItemProvider(this);
+ }
+
+ return layersStackApplicationItemProvider;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayersStackApplicationItemProvider.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayersStackApplicationItemProvider.java
new file mode 100644
index 00000000000..8120dd94052
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayersStackApplicationItemProvider.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.provider.custom;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStackApplicationItemProvider extends org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersStackApplicationItemProvider {
+
+ /**
+ * Constructor.
+ *
+ * @param adapterFactory
+ */
+ public LayersStackApplicationItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * Only return the owned stacks
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getChildren(java.lang.Object)
+ *
+ * @param object
+ * @return
+ */
+ @Override
+ public Collection<?> getChildren(Object object) {
+
+ return ((LayersStackApplication)object).getLayersStacks();
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/.classpath
new file mode 100644
index 00000000000..ed2bc1287f0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/.project b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/.project
new file mode 100644
index 00000000000..ff1cc81358a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.stackmodel.editor</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.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..9107de3b6b6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel.editor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.papyrus.layers.stackmodel.layers.presentation,
+ org.eclipse.papyrus.layers.configmodel.layersconfig.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;visibility:=reexport,
+ org.eclipse.papyrus.layers.stackmodel.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.gmf.runtime.notation.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/build.properties
new file mode 100644
index 00000000000..24556ea4f41
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/build.properties
@@ -0,0 +1,19 @@
+#
+
+bin.includes = .,\
+ icons/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ bin/
+jars.compile.order = .
+source.. = src/
+output.. = bin
+src.includes = .classpath,\
+ .project,\
+ META-INF/,\
+ build.properties,\
+ icons/,\
+ plugin.properties,\
+ plugin.xml,\
+ src/
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersModelFile.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersModelFile.gif
new file mode 100644
index 00000000000..8315589c999
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersModelFile.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersconfigModelFile.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersconfigModelFile.gif
new file mode 100644
index 00000000000..8a7eeb2c824
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersconfigModelFile.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayers.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayers.gif
new file mode 100644
index 00000000000..a6b42e7444a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayers.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayersconfig.gif b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayersconfig.gif
new file mode 100644
index 00000000000..eab53a99e8c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayersconfig.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.properties
new file mode 100644
index 00000000000..002f063afce
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.properties
@@ -0,0 +1,60 @@
+#
+
+pluginName = Layers Editor
+providerName = www.example.org
+
+_UI_LayersEditor_menu = &Layers Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = Example EMF Model Creation Wizards
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_LayersModelWizard_label = Layers Model
+_UI_LayersModelWizard_description = Create a new Layers model
+
+_UI_LayersEditor_label = Layers Model Editor
+
+_UI_LayersEditorFilenameDefaultBase = My
+_UI_LayersEditorFilenameExtensions = layers
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes?
+
+_UI_LayersconfigEditor_menu = &Layersconfig Editor
+ _UI_LayersconfigModelWizard_label = Layersconfig Model
+_UI_LayersconfigModelWizard_description = Create a new Layersconfig model
+ _UI_LayersconfigEditor_label = Layersconfig Model Editor
+ _UI_LayersconfigEditorFilenameDefaultBase = My
+_UI_LayersconfigEditorFilenameExtensions = layersconfig
+
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.xml b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.xml
new file mode 100644
index 00000000000..26fa18d4121
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.ui.newWizards">
+ <!-- @generated layers -->
+ <category
+ id="org.eclipse.emf.ecore.Wizard.category.ID"
+ name="%_UI_Wizard_category"/>
+ <wizard
+ id="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersModelWizardID"
+ name="%_UI_LayersModelWizard_label"
+ class="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersModelWizard"
+ category="org.eclipse.emf.ecore.Wizard.category.ID"
+ icon="icons/full/obj16/LayersModelFile.gif">
+ <description>%_UI_LayersModelWizard_description</description>
+ <selection class="org.eclipse.core.resources.IResource"/>
+ </wizard>
+ </extension>
+
+ <extension point="org.eclipse.ui.editors">
+ <!-- @generated layersconfig -->
+ <editor
+ id="org.eclipse.papyrus.layers.configmodel.layersconfig.presentation.LayersconfigEditorID"
+ name="%_UI_LayersconfigEditor_label"
+ icon="icons/full/obj16/LayersconfigModelFile.gif"
+ extensions="layersconfig"
+ class="org.eclipse.papyrus.layers.configmodel.layersconfig.presentation.LayersconfigEditor"
+ contributorClass="org.eclipse.papyrus.layers.configmodel.layersconfig.presentation.LayersconfigActionBarContributor">
+ </editor>
+ </extension>
+
+ <extension point="org.eclipse.ui.editors">
+ <!-- @generated layers -->
+ <editor
+ id="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditorID"
+ name="%_UI_LayersEditor_label"
+ icon="icons/full/obj16/LayersModelFile.gif"
+ extensions="layers"
+ class="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditor"
+ contributorClass="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersActionBarContributor">
+ </editor>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigActionBarContributor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigActionBarContributor.java
new file mode 100644
index 00000000000..d11582d4de8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigActionBarContributor.java
@@ -0,0 +1,433 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Layersconfig model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersconfigActionBarContributor
+ extends EditingDomainActionBarContributor
+ implements ISelectionChangedListener {
+ /**
+ * This keeps track of the active editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IEditorPart activeEditorPart;
+
+ /**
+ * This keeps track of the current selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelectionProvider selectionProvider;
+
+ /**
+ * This action opens the Properties view.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction showPropertiesViewAction =
+ new Action(LayersconfigEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+ @Override
+ public void run() {
+ try {
+ getPage().showView("org.eclipse.ui.views.PropertySheet");
+ }
+ catch (PartInitException exception) {
+ LayersconfigEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * This action refreshes the viewer of the current editor if the editor
+ * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction refreshViewerAction =
+ new Action(LayersconfigEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+ @Override
+ public boolean isEnabled() {
+ return activeEditorPart instanceof IViewerProvider;
+ }
+
+ @Override
+ public void run() {
+ if (activeEditorPart instanceof IViewerProvider) {
+ Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+ if (viewer != null) {
+ viewer.refresh();
+ }
+ }
+ }
+ };
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createChildActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createChildMenuManager;
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createSiblingActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createSiblingMenuManager;
+
+ /**
+ * This creates an instance of the contributor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigActionBarContributor() {
+ super(ADDITIONS_LAST_STYLE);
+ loadResourceAction = new LoadResourceAction();
+ validateAction = new ValidateAction();
+ controlAction = new ControlAction();
+ }
+
+ /**
+ * This adds Separators for editor additions to the tool bar.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void contributeToToolBar(IToolBarManager toolBarManager) {
+ toolBarManager.add(new Separator("layersconfig-settings"));
+ toolBarManager.add(new Separator("layersconfig-additions"));
+ }
+
+ /**
+ * This adds to the menu bar a menu and some separators for editor additions,
+ * as well as the sub-menus for object creation items.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void contributeToMenu(IMenuManager menuManager) {
+ super.contributeToMenu(menuManager);
+
+ IMenuManager submenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditor_menu"), "org.eclipse.papyrus.layers.configmodel.layersconfigMenuID");
+ menuManager.insertAfter("additions", submenuManager);
+ submenuManager.add(new Separator("settings"));
+ submenuManager.add(new Separator("actions"));
+ submenuManager.add(new Separator("additions"));
+ submenuManager.add(new Separator("additions-end"));
+
+ // Prepare for CreateChild item addition or removal.
+ //
+ createChildMenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ submenuManager.insertBefore("additions", createChildMenuManager);
+
+ // Prepare for CreateSibling item addition or removal.
+ //
+ createSiblingMenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+ // Force an update because Eclipse hides empty menus now.
+ //
+ submenuManager.addMenuListener
+ (new IMenuListener() {
+ public void menuAboutToShow(IMenuManager menuManager) {
+ menuManager.updateAll(true);
+ }
+ });
+
+ addGlobalActions(submenuManager);
+ }
+
+ /**
+ * When the active editor changes, this remembers the change and registers with it as a selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setActiveEditor(IEditorPart part) {
+ super.setActiveEditor(part);
+ activeEditorPart = part;
+
+ // Switch to the new selection provider.
+ //
+ if (selectionProvider != null) {
+ selectionProvider.removeSelectionChangedListener(this);
+ }
+ if (part == null) {
+ selectionProvider = null;
+ }
+ else {
+ selectionProvider = part.getSite().getSelectionProvider();
+ selectionProvider.addSelectionChangedListener(this);
+
+ // Fake a selection changed event to update the menus.
+ //
+ if (selectionProvider.getSelection() != null) {
+ selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+ }
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+ * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+ * that can be added to the selected object and updating the menus accordingly.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ // Remove any menu items for old selection.
+ //
+ if (createChildMenuManager != null) {
+ depopulateManager(createChildMenuManager, createChildActions);
+ }
+ if (createSiblingMenuManager != null) {
+ depopulateManager(createSiblingMenuManager, createSiblingActions);
+ }
+
+ // Query the new selection for appropriate new child/sibling descriptors
+ //
+ Collection<?> newChildDescriptors = null;
+ Collection<?> newSiblingDescriptors = null;
+
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+ Object object = ((IStructuredSelection)selection).getFirstElement();
+
+ EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+ newChildDescriptors = domain.getNewChildDescriptors(object, null);
+ newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+ }
+
+ // Generate actions for selection; populate and redraw the menus.
+ //
+ createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+ createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+ if (createChildMenuManager != null) {
+ populateManager(createChildMenuManager, createChildActions, null);
+ createChildMenuManager.update(true);
+ }
+ if (createSiblingMenuManager != null) {
+ populateManager(createSiblingMenuManager, createSiblingActions, null);
+ createSiblingMenuManager.update(true);
+ }
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+ * by inserting them before the specified contribution item <code>contributionID</code>.
+ * If <code>contributionID</code> is <code>null</code>, they are simply added.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+ if (actions != null) {
+ for (IAction action : actions) {
+ if (contributionID != null) {
+ manager.insertBefore(contributionID, action);
+ }
+ else {
+ manager.add(action);
+ }
+ }
+ }
+ }
+
+ /**
+ * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+ if (actions != null) {
+ IContributionItem[] items = manager.getItems();
+ for (int i = 0; i < items.length; i++) {
+ // Look into SubContributionItems
+ //
+ IContributionItem contributionItem = items[i];
+ while (contributionItem instanceof SubContributionItem) {
+ contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+ }
+
+ // Delete the ActionContributionItems with matching action.
+ //
+ if (contributionItem instanceof ActionContributionItem) {
+ IAction action = ((ActionContributionItem)contributionItem).getAction();
+ if (actions.contains(action)) {
+ manager.remove(contributionItem);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This populates the pop-up menu before it appears.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void menuAboutToShow(IMenuManager menuManager) {
+ super.menuAboutToShow(menuManager);
+ MenuManager submenuManager = null;
+
+ submenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ populateManager(submenuManager, createChildActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+
+ submenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ populateManager(submenuManager, createSiblingActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+ }
+
+ /**
+ * This inserts global actions before the "additions-end" separator.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void addGlobalActions(IMenuManager menuManager) {
+ menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+ menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+ refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+ menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+ super.addGlobalActions(menuManager);
+ }
+
+ /**
+ * This ensures that a delete action will clean up all references to deleted objects.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean removeAllReferencesOnDelete() {
+ return true;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditor.java
new file mode 100644
index 00000000000..0e2d9f0447f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditor.java
@@ -0,0 +1,1828 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.provider.LayersconfigItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Layersconfig model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersconfigEditor
+ extends MultiPageEditorPart
+ implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+ /**
+ * This keeps track of the editing domain that is used to track all changes to the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AdapterFactoryEditingDomain editingDomain;
+
+ /**
+ * This is the one adapter factory used for providing views of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory adapterFactory;
+
+ /**
+ * This is the content outline page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IContentOutlinePage contentOutlinePage;
+
+ /**
+ * This is a kludge...
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IStatusLineManager contentOutlineStatusLineManager;
+
+ /**
+ * This is the content outline page's viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer contentOutlineViewer;
+
+ /**
+ * This is the property sheet page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+ /**
+ * This is the viewer that shadows the selection in the content outline.
+ * The parent relation must be correctly defined for this to work.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer selectionViewer;
+
+ /**
+ * This inverts the roll of parent and child in the content provider and show parents as a tree.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer parentViewer;
+
+ /**
+ * This shows how a tree view works.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer treeViewer;
+
+ /**
+ * This shows how a list view works.
+ * A list viewer doesn't support icons.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ListViewer listViewer;
+
+ /**
+ * This shows how a table view works.
+ * A table can be used as a list with icons.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TableViewer tableViewer;
+
+ /**
+ * This shows how a tree view with columns works.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer treeViewerWithColumns;
+
+ /**
+ * This keeps track of the active viewer pane, in the book.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ViewerPane currentViewerPane;
+
+ /**
+ * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Viewer currentViewer;
+
+ /**
+ * This listens to which ever viewer is active.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelectionChangedListener selectionChangedListener;
+
+ /**
+ * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+ /**
+ * This keeps track of the selection of the editor as a whole.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+ /**
+ * The MarkerHelper is responsible for creating workspace resource markers presented
+ * in Eclipse's Problems View.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+ /**
+ * This listens for when the outline becomes active
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IPartListener partListener =
+ new IPartListener() {
+ public void partActivated(IWorkbenchPart p) {
+ if (p instanceof ContentOutline) {
+ if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+ getActionBarContributor().setActiveEditor(LayersconfigEditor.this);
+
+ setCurrentViewer(contentOutlineViewer);
+ }
+ }
+ else if (p instanceof PropertySheet) {
+ if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+ getActionBarContributor().setActiveEditor(LayersconfigEditor.this);
+ handleActivate();
+ }
+ }
+ else if (p == LayersconfigEditor.this) {
+ handleActivate();
+ }
+ }
+ public void partBroughtToTop(IWorkbenchPart p) {
+ // Ignore.
+ }
+ public void partClosed(IWorkbenchPart p) {
+ // Ignore.
+ }
+ public void partDeactivated(IWorkbenchPart p) {
+ // Ignore.
+ }
+ public void partOpened(IWorkbenchPart p) {
+ // Ignore.
+ }
+ };
+
+ /**
+ * Resources that have been removed since last activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+ /**
+ * Resources that have been changed since last activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+ /**
+ * Resources that have been saved.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+ /**
+ * Map to store the diagnostic associated with a resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+ /**
+ * Controls whether the problem indication should be updated.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean updateProblemIndication = true;
+
+ /**
+ * Adapter used to update the problem indication when resources are demanded loaded.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EContentAdapter problemIndicationAdapter =
+ new EContentAdapter() {
+ @Override
+ public void notifyChanged(Notification notification) {
+ if (notification.getNotifier() instanceof Resource) {
+ switch (notification.getFeatureID(Resource.class)) {
+ case Resource.RESOURCE__IS_LOADED:
+ case Resource.RESOURCE__ERRORS:
+ case Resource.RESOURCE__WARNINGS: {
+ Resource resource = (Resource)notification.getNotifier();
+ Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ resourceToDiagnosticMap.put(resource, diagnostic);
+ }
+ else {
+ resourceToDiagnosticMap.remove(resource);
+ }
+
+ if (updateProblemIndication) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ updateProblemIndication();
+ }
+ });
+ }
+ break;
+ }
+ }
+ }
+ else {
+ super.notifyChanged(notification);
+ }
+ }
+
+ @Override
+ protected void setTarget(Resource target) {
+ basicSetTarget(target);
+ }
+
+ @Override
+ protected void unsetTarget(Resource target) {
+ basicUnsetTarget(target);
+ resourceToDiagnosticMap.remove(target);
+ if (updateProblemIndication) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ updateProblemIndication();
+ }
+ });
+ }
+ }
+ };
+
+ /**
+ * This listens for workspace changes.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IResourceChangeListener resourceChangeListener =
+ new IResourceChangeListener() {
+ public void resourceChanged(IResourceChangeEvent event) {
+ IResourceDelta delta = event.getDelta();
+ try {
+ class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+ protected ResourceSet resourceSet = editingDomain.getResourceSet();
+ protected Collection<Resource> changedResources = new ArrayList<Resource>();
+ protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+ public boolean visit(IResourceDelta delta) {
+ if (delta.getResource().getType() == IResource.FILE) {
+ if (delta.getKind() == IResourceDelta.REMOVED ||
+ delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+ Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+ if (resource != null) {
+ if (delta.getKind() == IResourceDelta.REMOVED) {
+ removedResources.add(resource);
+ }
+ else if (!savedResources.remove(resource)) {
+ changedResources.add(resource);
+ }
+ }
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ public Collection<Resource> getChangedResources() {
+ return changedResources;
+ }
+
+ public Collection<Resource> getRemovedResources() {
+ return removedResources;
+ }
+ }
+
+ final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+ delta.accept(visitor);
+
+ if (!visitor.getRemovedResources().isEmpty()) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ removedResources.addAll(visitor.getRemovedResources());
+ if (!isDirty()) {
+ getSite().getPage().closeEditor(LayersconfigEditor.this, false);
+ }
+ }
+ });
+ }
+
+ if (!visitor.getChangedResources().isEmpty()) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ changedResources.addAll(visitor.getChangedResources());
+ if (getSite().getPage().getActiveEditor() == LayersconfigEditor.this) {
+ handleActivate();
+ }
+ }
+ });
+ }
+ }
+ catch (CoreException exception) {
+ LayersconfigEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * Handles activation of the editor or it's associated views.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void handleActivate() {
+ // Recompute the read only state.
+ //
+ if (editingDomain.getResourceToReadOnlyMap() != null) {
+ editingDomain.getResourceToReadOnlyMap().clear();
+
+ // Refresh any actions that may become enabled or disabled.
+ //
+ setSelection(getSelection());
+ }
+
+ if (!removedResources.isEmpty()) {
+ if (handleDirtyConflict()) {
+ getSite().getPage().closeEditor(LayersconfigEditor.this, false);
+ }
+ else {
+ removedResources.clear();
+ changedResources.clear();
+ savedResources.clear();
+ }
+ }
+ else if (!changedResources.isEmpty()) {
+ changedResources.removeAll(savedResources);
+ handleChangedResources();
+ changedResources.clear();
+ savedResources.clear();
+ }
+ }
+
+ /**
+ * Handles what to do with changed resources on activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void handleChangedResources() {
+ if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+ if (isDirty()) {
+ changedResources.addAll(editingDomain.getResourceSet().getResources());
+ }
+ editingDomain.getCommandStack().flush();
+
+ updateProblemIndication = false;
+ for (Resource resource : changedResources) {
+ if (resource.isLoaded()) {
+ resource.unload();
+ try {
+ resource.load(Collections.EMPTY_MAP);
+ }
+ catch (IOException exception) {
+ if (!resourceToDiagnosticMap.containsKey(resource)) {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ }
+ }
+ }
+
+ if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+ setSelection(StructuredSelection.EMPTY);
+ }
+
+ updateProblemIndication = true;
+ updateProblemIndication();
+ }
+ }
+
+ /**
+ * Updates the problems indication with the information described in the specified diagnostic.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void updateProblemIndication() {
+ if (updateProblemIndication) {
+ BasicDiagnostic diagnostic =
+ new BasicDiagnostic
+ (Diagnostic.OK,
+ "org.eclipse.papyrus.layers.stackmodel.editor",
+ 0,
+ null,
+ new Object [] { editingDomain.getResourceSet() });
+ for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+ if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+ diagnostic.add(childDiagnostic);
+ }
+ }
+
+ int lastEditorPage = getPageCount() - 1;
+ if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+ ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ setActivePage(lastEditorPage);
+ }
+ }
+ else if (diagnostic.getSeverity() != Diagnostic.OK) {
+ ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+ problemEditorPart.setDiagnostic(diagnostic);
+ problemEditorPart.setMarkerHelper(markerHelper);
+ try {
+ addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+ setPageText(lastEditorPage, problemEditorPart.getPartName());
+ setActivePage(lastEditorPage);
+ showTabs();
+ }
+ catch (PartInitException exception) {
+ LayersconfigEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+ markerHelper.deleteMarkers(editingDomain.getResourceSet());
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ try {
+ markerHelper.createMarkers(diagnostic);
+ }
+ catch (CoreException exception) {
+ LayersconfigEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Shows a dialog that asks if conflicting changes should be discarded.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean handleDirtyConflict() {
+ return
+ MessageDialog.openQuestion
+ (getSite().getShell(),
+ getString("_UI_FileConflict_label"),
+ getString("_WARN_FileConflict"));
+ }
+
+ /**
+ * This creates a model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigEditor() {
+ super();
+ initializeEditingDomain();
+ }
+
+ /**
+ * This sets up the editing domain for the model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void initializeEditingDomain() {
+ // Create an adapter factory that yields item providers.
+ //
+ adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new LayersconfigItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+ // Create the command stack that will notify this editor as commands are executed.
+ //
+ BasicCommandStack commandStack = new BasicCommandStack();
+
+ // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+ //
+ commandStack.addCommandStackListener
+ (new CommandStackListener() {
+ public void commandStackChanged(final EventObject event) {
+ getContainer().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+
+ // Try to select the affected objects.
+ //
+ Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+ if (mostRecentCommand != null) {
+ setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+ }
+ for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+ PropertySheetPage propertySheetPage = i.next();
+ if (propertySheetPage.getControl().isDisposed()) {
+ i.remove();
+ }
+ else {
+ propertySheetPage.refresh();
+ }
+ }
+ }
+ });
+ }
+ });
+
+ // Create the editing domain with a special command stack.
+ //
+ editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+ }
+
+ /**
+ * This is here for the listener to be able to call it.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void firePropertyChange(int action) {
+ super.firePropertyChange(action);
+ }
+
+ /**
+ * This sets the selection into whichever viewer is active.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSelectionToViewer(Collection<?> collection) {
+ final Collection<?> theSelection = collection;
+ // Make sure it's okay.
+ //
+ if (theSelection != null && !theSelection.isEmpty()) {
+ Runnable runnable =
+ new Runnable() {
+ public void run() {
+ // Try to select the items in the current content viewer of the editor.
+ //
+ if (currentViewer != null) {
+ currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+ }
+ }
+ };
+ getSite().getShell().getDisplay().asyncExec(runnable);
+ }
+ }
+
+ /**
+ * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+ * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+ * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EditingDomain getEditingDomain() {
+ return editingDomain;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object [] getElements(Object object) {
+ Object parent = super.getParent(object);
+ return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object [] getChildren(Object object) {
+ Object parent = super.getParent(object);
+ return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean hasChildren(Object object) {
+ Object parent = super.getParent(object);
+ return parent != null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getParent(Object object) {
+ return null;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCurrentViewerPane(ViewerPane viewerPane) {
+ if (currentViewerPane != viewerPane) {
+ if (currentViewerPane != null) {
+ currentViewerPane.showFocus(false);
+ }
+ currentViewerPane = viewerPane;
+ }
+ setCurrentViewer(currentViewerPane.getViewer());
+ }
+
+ /**
+ * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+ * is the current one.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCurrentViewer(Viewer viewer) {
+ // If it is changing...
+ //
+ if (currentViewer != viewer) {
+ if (selectionChangedListener == null) {
+ // Create the listener on demand.
+ //
+ selectionChangedListener =
+ new ISelectionChangedListener() {
+ // This just notifies those things that are affected by the section.
+ //
+ public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+ setSelection(selectionChangedEvent.getSelection());
+ }
+ };
+ }
+
+ // Stop listening to the old one.
+ //
+ if (currentViewer != null) {
+ currentViewer.removeSelectionChangedListener(selectionChangedListener);
+ }
+
+ // Start listening to the new one.
+ //
+ if (viewer != null) {
+ viewer.addSelectionChangedListener(selectionChangedListener);
+ }
+
+ // Remember it.
+ //
+ currentViewer = viewer;
+
+ // Set the editors selection based on the current viewer's selection.
+ //
+ setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+ }
+ }
+
+ /**
+ * This returns the viewer as required by the {@link IViewerProvider} interface.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Viewer getViewer() {
+ return currentViewer;
+ }
+
+ /**
+ * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createContextMenuFor(StructuredViewer viewer) {
+ MenuManager contextMenu = new MenuManager("#PopUp");
+ contextMenu.add(new Separator("additions"));
+ contextMenu.setRemoveAllWhenShown(true);
+ contextMenu.addMenuListener(this);
+ Menu menu= contextMenu.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+ int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+ Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+ viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+ viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+ }
+
+ /**
+ * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createModel() {
+ URI resourceURI = EditUIUtil.getURI(getEditorInput());
+ Exception exception = null;
+ Resource resource = null;
+ try {
+ // Load the resource through the editing domain.
+ //
+ resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+ }
+ catch (Exception e) {
+ exception = e;
+ resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+ }
+
+ Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+ }
+
+ /**
+ * Returns a diagnostic describing the errors and warnings listed in the resource
+ * and the specified exception (if any).
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+ if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+ BasicDiagnostic basicDiagnostic =
+ new BasicDiagnostic
+ (Diagnostic.ERROR,
+ "org.eclipse.papyrus.layers.stackmodel.editor",
+ 0,
+ getString("_UI_CreateModelError_message", resource.getURI()),
+ new Object [] { exception == null ? (Object)resource : exception });
+ basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+ return basicDiagnostic;
+ }
+ else if (exception != null) {
+ return
+ new BasicDiagnostic
+ (Diagnostic.ERROR,
+ "org.eclipse.papyrus.layers.stackmodel.editor",
+ 0,
+ getString("_UI_CreateModelError_message", resource.getURI()),
+ new Object[] { exception });
+ }
+ else {
+ return Diagnostic.OK_INSTANCE;
+ }
+ }
+
+ /**
+ * This is the method used by the framework to install your own controls.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void createPages() {
+ // Creates the model from the editor input
+ //
+ createModel();
+
+ // Only creates the other pages if there is something that can be edited
+ //
+ if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+ // Create a page for the selection tree view.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ Tree tree = new Tree(composite, SWT.MULTI);
+ TreeViewer newTreeViewer = new TreeViewer(tree);
+ return newTreeViewer;
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+
+ selectionViewer = (TreeViewer)viewerPane.getViewer();
+ selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+ selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+ selectionViewer.setInput(editingDomain.getResourceSet());
+ selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+ viewerPane.setTitle(editingDomain.getResourceSet());
+
+ new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+ createContextMenuFor(selectionViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+ }
+
+ // Create a page for the parent tree view.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ Tree tree = new Tree(composite, SWT.MULTI);
+ TreeViewer newTreeViewer = new TreeViewer(tree);
+ return newTreeViewer;
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+
+ parentViewer = (TreeViewer)viewerPane.getViewer();
+ parentViewer.setAutoExpandLevel(30);
+ parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+ parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(parentViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_ParentPage_label"));
+ }
+
+ // This is the page for the list viewer
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ return new ListViewer(composite);
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+ listViewer = (ListViewer)viewerPane.getViewer();
+ listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(listViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_ListPage_label"));
+ }
+
+ // This is the page for the tree viewer
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ return new TreeViewer(composite);
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+ treeViewer = (TreeViewer)viewerPane.getViewer();
+ treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+ createContextMenuFor(treeViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_TreePage_label"));
+ }
+
+ // This is the page for the table viewer.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ return new TableViewer(composite);
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+ tableViewer = (TableViewer)viewerPane.getViewer();
+
+ Table table = tableViewer.getTable();
+ TableLayout layout = new TableLayout();
+ table.setLayout(layout);
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+ layout.addColumnData(new ColumnWeightData(3, 100, true));
+ objectColumn.setText(getString("_UI_ObjectColumn_label"));
+ objectColumn.setResizable(true);
+
+ TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+ layout.addColumnData(new ColumnWeightData(2, 100, true));
+ selfColumn.setText(getString("_UI_SelfColumn_label"));
+ selfColumn.setResizable(true);
+
+ tableViewer.setColumnProperties(new String [] {"a", "b"});
+ tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(tableViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_TablePage_label"));
+ }
+
+ // This is the page for the table tree viewer.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ return new TreeViewer(composite);
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+
+ treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+ Tree tree = treeViewerWithColumns.getTree();
+ tree.setLayoutData(new FillLayout());
+ tree.setHeaderVisible(true);
+ tree.setLinesVisible(true);
+
+ TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+ objectColumn.setText(getString("_UI_ObjectColumn_label"));
+ objectColumn.setResizable(true);
+ objectColumn.setWidth(250);
+
+ TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+ selfColumn.setText(getString("_UI_SelfColumn_label"));
+ selfColumn.setResizable(true);
+ selfColumn.setWidth(200);
+
+ treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+ treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(treeViewerWithColumns);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+ }
+
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ setActivePage(0);
+ }
+ });
+ }
+
+ // Ensures that this editor will only display the page's tab
+ // area if there are more than one page
+ //
+ getContainer().addControlListener
+ (new ControlAdapter() {
+ boolean guard = false;
+ @Override
+ public void controlResized(ControlEvent event) {
+ if (!guard) {
+ guard = true;
+ hideTabs();
+ guard = false;
+ }
+ }
+ });
+
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ updateProblemIndication();
+ }
+ });
+ }
+
+ /**
+ * If there is just one page in the multi-page editor part,
+ * this hides the single tab at the bottom.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void hideTabs() {
+ if (getPageCount() <= 1) {
+ setPageText(0, "");
+ if (getContainer() instanceof CTabFolder) {
+ ((CTabFolder)getContainer()).setTabHeight(1);
+ Point point = getContainer().getSize();
+ getContainer().setSize(point.x, point.y + 6);
+ }
+ }
+ }
+
+ /**
+ * If there is more than one page in the multi-page editor part,
+ * this shows the tabs at the bottom.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void showTabs() {
+ if (getPageCount() > 1) {
+ setPageText(0, getString("_UI_SelectionPage_label"));
+ if (getContainer() instanceof CTabFolder) {
+ ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+ Point point = getContainer().getSize();
+ getContainer().setSize(point.x, point.y - 6);
+ }
+ }
+ }
+
+ /**
+ * This is used to track the active viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void pageChange(int pageIndex) {
+ super.pageChange(pageIndex);
+
+ if (contentOutlinePage != null) {
+ handleContentOutlineSelection(contentOutlinePage.getSelection());
+ }
+ }
+
+ /**
+ * This is how the framework determines which interfaces we implement.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Object getAdapter(Class key) {
+ if (key.equals(IContentOutlinePage.class)) {
+ return showOutlineView() ? getContentOutlinePage() : null;
+ }
+ else if (key.equals(IPropertySheetPage.class)) {
+ return getPropertySheetPage();
+ }
+ else if (key.equals(IGotoMarker.class)) {
+ return this;
+ }
+ else {
+ return super.getAdapter(key);
+ }
+ }
+
+ /**
+ * This accesses a cached version of the content outliner.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IContentOutlinePage getContentOutlinePage() {
+ if (contentOutlinePage == null) {
+ // The content outline is just a tree.
+ //
+ class MyContentOutlinePage extends ContentOutlinePage {
+ @Override
+ public void createControl(Composite parent) {
+ super.createControl(parent);
+ contentOutlineViewer = getTreeViewer();
+ contentOutlineViewer.addSelectionChangedListener(this);
+
+ // Set up the tree viewer.
+ //
+ contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+ contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+ // Make sure our popups work.
+ //
+ createContextMenuFor(contentOutlineViewer);
+
+ if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+ // Select the root object in the view.
+ //
+ contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+ }
+ }
+
+ @Override
+ public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+ super.makeContributions(menuManager, toolBarManager, statusLineManager);
+ contentOutlineStatusLineManager = statusLineManager;
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars) {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ }
+
+ contentOutlinePage = new MyContentOutlinePage();
+
+ // Listen to selection so that we can handle it is a special way.
+ //
+ contentOutlinePage.addSelectionChangedListener
+ (new ISelectionChangedListener() {
+ // This ensures that we handle selections correctly.
+ //
+ public void selectionChanged(SelectionChangedEvent event) {
+ handleContentOutlineSelection(event.getSelection());
+ }
+ });
+ }
+
+ return contentOutlinePage;
+ }
+
+ /**
+ * This accesses a cached version of the property sheet.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IPropertySheetPage getPropertySheetPage() {
+ PropertySheetPage propertySheetPage =
+ new ExtendedPropertySheetPage(editingDomain) {
+ @Override
+ public void setSelectionToViewer(List<?> selection) {
+ LayersconfigEditor.this.setSelectionToViewer(selection);
+ LayersconfigEditor.this.setFocus();
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars) {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ };
+ propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+ propertySheetPages.add(propertySheetPage);
+
+ return propertySheetPage;
+ }
+
+ /**
+ * This deals with how we want selection in the outliner to affect the other views.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void handleContentOutlineSelection(ISelection selection) {
+ if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+ Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+ if (selectedElements.hasNext()) {
+ // Get the first selected element.
+ //
+ Object selectedElement = selectedElements.next();
+
+ // If it's the selection viewer, then we want it to select the same selection as this selection.
+ //
+ if (currentViewerPane.getViewer() == selectionViewer) {
+ ArrayList<Object> selectionList = new ArrayList<Object>();
+ selectionList.add(selectedElement);
+ while (selectedElements.hasNext()) {
+ selectionList.add(selectedElements.next());
+ }
+
+ // Set the selection to the widget.
+ //
+ selectionViewer.setSelection(new StructuredSelection(selectionList));
+ }
+ else {
+ // Set the input to the widget.
+ //
+ if (currentViewerPane.getViewer().getInput() != selectedElement) {
+ currentViewerPane.getViewer().setInput(selectedElement);
+ currentViewerPane.setTitle(selectedElement);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This is for implementing {@link IEditorPart} and simply tests the command stack.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isDirty() {
+ return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+ }
+
+ /**
+ * This is for implementing {@link IEditorPart} and simply saves the model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void doSave(IProgressMonitor progressMonitor) {
+ // Save only resources that have actually changed.
+ //
+ final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+ saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+ saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+ // Do the work within an operation because this is a long running activity that modifies the workbench.
+ //
+ WorkspaceModifyOperation operation =
+ new WorkspaceModifyOperation() {
+ // This is the method that gets invoked when the operation runs.
+ //
+ @Override
+ public void execute(IProgressMonitor monitor) {
+ // Save the resources to the file system.
+ //
+ boolean first = true;
+ for (Resource resource : editingDomain.getResourceSet().getResources()) {
+ if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+ try {
+ long timeStamp = resource.getTimeStamp();
+ resource.save(saveOptions);
+ if (resource.getTimeStamp() != timeStamp) {
+ savedResources.add(resource);
+ }
+ }
+ catch (Exception exception) {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ first = false;
+ }
+ }
+ }
+ };
+
+ updateProblemIndication = false;
+ try {
+ // This runs the options, and shows progress.
+ //
+ new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+ // Refresh the necessary state.
+ //
+ ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+ }
+ catch (Exception exception) {
+ // Something went wrong that shouldn't.
+ //
+ LayersconfigEditorPlugin.INSTANCE.log(exception);
+ }
+ updateProblemIndication = true;
+ updateProblemIndication();
+ }
+
+ /**
+ * This returns whether something has been persisted to the URI of the specified resource.
+ * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean isPersisted(Resource resource) {
+ boolean result = false;
+ try {
+ InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+ if (stream != null) {
+ result = true;
+ stream.close();
+ }
+ }
+ catch (IOException e) {
+ // Ignore
+ }
+ return result;
+ }
+
+ /**
+ * This always returns true because it is not currently supported.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isSaveAsAllowed() {
+ return true;
+ }
+
+ /**
+ * This also changes the editor's input.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void doSaveAs() {
+ SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+ saveAsDialog.open();
+ IPath path = saveAsDialog.getResult();
+ if (path != null) {
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+ if (file != null) {
+ doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void doSaveAs(URI uri, IEditorInput editorInput) {
+ (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+ setInputWithNotify(editorInput);
+ setPartName(editorInput.getName());
+ IProgressMonitor progressMonitor =
+ getActionBars().getStatusLineManager() != null ?
+ getActionBars().getStatusLineManager().getProgressMonitor() :
+ new NullProgressMonitor();
+ doSave(progressMonitor);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void gotoMarker(IMarker marker) {
+ List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+ if (!targetObjects.isEmpty()) {
+ setSelectionToViewer(targetObjects);
+ }
+ }
+
+ /**
+ * This is called during startup.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void init(IEditorSite site, IEditorInput editorInput) {
+ setSite(site);
+ setInputWithNotify(editorInput);
+ setPartName(editorInput.getName());
+ site.setSelectionProvider(this);
+ site.getPage().addPartListener(partListener);
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setFocus() {
+ if (currentViewerPane != null) {
+ currentViewerPane.setFocus();
+ }
+ else {
+ getControl(getActivePage()).setFocus();
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionChangedListeners.add(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionChangedListeners.remove(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ISelection getSelection() {
+ return editorSelection;
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+ * Calling this result will notify the listeners.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSelection(ISelection selection) {
+ editorSelection = selection;
+
+ for (ISelectionChangedListener listener : selectionChangedListeners) {
+ listener.selectionChanged(new SelectionChangedEvent(this, selection));
+ }
+ setStatusLineManager(selection);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStatusLineManager(ISelection selection) {
+ IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+ contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+ if (statusLineManager != null) {
+ if (selection instanceof IStructuredSelection) {
+ Collection<?> collection = ((IStructuredSelection)selection).toList();
+ switch (collection.size()) {
+ case 0: {
+ statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+ break;
+ }
+ case 1: {
+ String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+ statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+ break;
+ }
+ default: {
+ statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+ break;
+ }
+ }
+ }
+ else {
+ statusLineManager.setMessage("");
+ }
+ }
+ }
+
+ /**
+ * This looks up a string in the plugin's plugin.properties file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static String getString(String key) {
+ return LayersconfigEditorPlugin.INSTANCE.getString(key);
+ }
+
+ /**
+ * This looks up a string in plugin.properties, making a substitution.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static String getString(String key, Object s1) {
+ return LayersconfigEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void menuAboutToShow(IMenuManager menuManager) {
+ ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EditingDomainActionBarContributor getActionBarContributor() {
+ return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IActionBars getActionBars() {
+ return getActionBarContributor().getActionBars();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AdapterFactory getAdapterFactory() {
+ return adapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void dispose() {
+ updateProblemIndication = false;
+
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+ getSite().getPage().removePartListener(partListener);
+
+ adapterFactory.dispose();
+
+ if (getActionBarContributor().getActiveEditor() == this) {
+ getActionBarContributor().setActiveEditor(null);
+ }
+
+ for (PropertySheetPage propertySheetPage : propertySheetPages) {
+ propertySheetPage.dispose();
+ }
+
+ if (contentOutlinePage != null) {
+ contentOutlinePage.dispose();
+ }
+
+ super.dispose();
+ }
+
+ /**
+ * Returns whether the outline view should be presented to the user.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean showOutlineView() {
+ return true;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditorPlugin.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditorPlugin.java
new file mode 100644
index 00000000000..6ef246c06f7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditorPlugin.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.presentation;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Layersconfig editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class LayersconfigEditorPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final LayersconfigEditorPlugin INSTANCE = new LayersconfigEditorPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigEditorPlugin() {
+ super
+ (new ResourceLocator [] {
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipseUIPlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigModelWizard.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigModelWizard.java
new file mode 100644
index 00000000000..c0f2224f4bf
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigModelWizard.java
@@ -0,0 +1,637 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.provider.LayersconfigEditPlugin;
+
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersconfigModelWizard extends Wizard implements INewWizard {
+ /**
+ * The supported extensions for created files.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<String> FILE_EXTENSIONS =
+ Collections.unmodifiableList(Arrays.asList(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditorFilenameExtensions").split("\\s*,\\s*")));
+
+ /**
+ * A formatted list of supported file extensions, suitable for display.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String FORMATTED_FILE_EXTENSIONS =
+ LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+ /**
+ * This caches an instance of the model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersconfigPackage layersconfigPackage = LayersconfigPackage.eINSTANCE;
+
+ /**
+ * This caches an instance of the model factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersconfigFactory layersconfigFactory = layersconfigPackage.getLayersconfigFactory();
+
+ /**
+ * This is the file creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersconfigModelWizardNewFileCreationPage newFileCreationPage;
+
+ /**
+ * This is the initial object creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersconfigModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+ /**
+ * Remember the selection during initialization for populating the default container.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IStructuredSelection selection;
+
+ /**
+ * Remember the workbench during initialization.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IWorkbench workbench;
+
+ /**
+ * Caches the names of the types that can be created as the root object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected List<String> initialObjectNames;
+
+ /**
+ * This just records the information.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ this.workbench = workbench;
+ this.selection = selection;
+ setWindowTitle(LayersconfigEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+ setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(LayersconfigEditorPlugin.INSTANCE.getImage("full/wizban/NewLayersconfig")));
+ }
+
+ /**
+ * Returns the names of the types that can be created as the root object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<String> getInitialObjectNames() {
+ if (initialObjectNames == null) {
+ initialObjectNames = new ArrayList<String>();
+ for (EClassifier eClassifier : layersconfigPackage.getEClassifiers()) {
+ if (eClassifier instanceof EClass) {
+ EClass eClass = (EClass)eClassifier;
+ if (!eClass.isAbstract()) {
+ initialObjectNames.add(eClass.getName());
+ }
+ }
+ }
+ Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+ }
+ return initialObjectNames;
+ }
+
+ /**
+ * Create a new model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EObject createInitialModel() {
+ EClass eClass = (EClass)layersconfigPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+ EObject rootObject = layersconfigFactory.create(eClass);
+ return rootObject;
+ }
+
+ /**
+ * Do the work after everything is specified.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean performFinish() {
+ try {
+ // Remember the file.
+ //
+ final IFile modelFile = getModelFile();
+
+ // Do the work within an operation.
+ //
+ WorkspaceModifyOperation operation =
+ new WorkspaceModifyOperation() {
+ @Override
+ protected void execute(IProgressMonitor progressMonitor) {
+ try {
+ // Create a resource set
+ //
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ // Get the URI of the model file.
+ //
+ URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+ // Create a resource for this file.
+ //
+ Resource resource = resourceSet.createResource(fileURI);
+
+ // Add the initial model object to the contents.
+ //
+ EObject rootObject = createInitialModel();
+ if (rootObject != null) {
+ resource.getContents().add(rootObject);
+ }
+
+ // Save the contents of the resource to the file system.
+ //
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+ resource.save(options);
+ }
+ catch (Exception exception) {
+ LayersconfigEditorPlugin.INSTANCE.log(exception);
+ }
+ finally {
+ progressMonitor.done();
+ }
+ }
+ };
+
+ getContainer().run(false, false, operation);
+
+ // Select the new file resource in the current view.
+ //
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IWorkbenchPage page = workbenchWindow.getActivePage();
+ final IWorkbenchPart activePart = page.getActivePart();
+ if (activePart instanceof ISetSelectionTarget) {
+ final ISelection targetSelection = new StructuredSelection(modelFile);
+ getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+ }
+ });
+ }
+
+ // Open an editor on the new file.
+ //
+ try {
+ page.openEditor
+ (new FileEditorInput(modelFile),
+ workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
+ }
+ catch (PartInitException exception) {
+ MessageDialog.openError(workbenchWindow.getShell(), LayersconfigEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+ return false;
+ }
+
+ return true;
+ }
+ catch (Exception exception) {
+ LayersconfigEditorPlugin.INSTANCE.log(exception);
+ return false;
+ }
+ }
+
+ /**
+ * This is the one page of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class LayersconfigModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+ super(pageId, selection);
+ }
+
+ /**
+ * The framework calls this to see if the file is correct.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean validatePage() {
+ if (super.validatePage()) {
+ String extension = new Path(getFileName()).getFileExtension();
+ if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+ String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+ setErrorMessage(LayersconfigEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IFile getModelFile() {
+ return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+ }
+ }
+
+ /**
+ * This is the page where the type of object to create is selected.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class LayersconfigModelWizardInitialObjectCreationPage extends WizardPage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Combo initialObjectField;
+
+ /**
+ * @generated
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ */
+ protected List<String> encodings;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Combo encodingField;
+
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigModelWizardInitialObjectCreationPage(String pageId) {
+ super(pageId);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE); {
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ layout.verticalSpacing = 12;
+ composite.setLayout(layout);
+
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.grabExcessVerticalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ composite.setLayoutData(data);
+ }
+
+ Label containerLabel = new Label(composite, SWT.LEFT);
+ {
+ containerLabel.setText(LayersconfigEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ containerLabel.setLayoutData(data);
+ }
+
+ initialObjectField = new Combo(composite, SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ initialObjectField.setLayoutData(data);
+ }
+
+ for (String objectName : getInitialObjectNames()) {
+ initialObjectField.add(getLabel(objectName));
+ }
+
+ if (initialObjectField.getItemCount() == 1) {
+ initialObjectField.select(0);
+ }
+ initialObjectField.addModifyListener(validator);
+
+ Label encodingLabel = new Label(composite, SWT.LEFT);
+ {
+ encodingLabel.setText(LayersconfigEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ encodingLabel.setLayoutData(data);
+ }
+ encodingField = new Combo(composite, SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ encodingField.setLayoutData(data);
+ }
+
+ for (String encoding : getEncodings()) {
+ encodingField.add(encoding);
+ }
+
+ encodingField.select(0);
+ encodingField.addModifyListener(validator);
+
+ setPageComplete(validatePage());
+ setControl(composite);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModifyListener validator =
+ new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ setPageComplete(validatePage());
+ }
+ };
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean validatePage() {
+ return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ if (visible) {
+ if (initialObjectField.getItemCount() == 1) {
+ initialObjectField.clearSelection();
+ encodingField.setFocus();
+ }
+ else {
+ encodingField.clearSelection();
+ initialObjectField.setFocus();
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getInitialObjectName() {
+ String label = initialObjectField.getText();
+
+ for (String name : getInitialObjectNames()) {
+ if (getLabel(name).equals(label)) {
+ return name;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getEncoding() {
+ return encodingField.getText();
+ }
+
+ /**
+ * Returns the label for the specified type name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected String getLabel(String typeName) {
+ try {
+ return LayersconfigEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+ }
+ catch(MissingResourceException mre) {
+ LayersconfigEditorPlugin.INSTANCE.log(mre);
+ }
+ return typeName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<String> getEncodings() {
+ if (encodings == null) {
+ encodings = new ArrayList<String>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(LayersconfigEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+ encodings.add(stringTokenizer.nextToken());
+ }
+ }
+ return encodings;
+ }
+ }
+
+ /**
+ * The framework calls this to create the contents of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void addPages() {
+ // Create a page, set the title, and the initial model file name.
+ //
+ newFileCreationPage = new LayersconfigModelWizardNewFileCreationPage("Whatever", selection);
+ newFileCreationPage.setTitle(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigModelWizard_label"));
+ newFileCreationPage.setDescription(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigModelWizard_description"));
+ newFileCreationPage.setFileName(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+ addPage(newFileCreationPage);
+
+ // Try and get the resource selection to determine a current directory for the file dialog.
+ //
+ if (selection != null && !selection.isEmpty()) {
+ // Get the resource...
+ //
+ Object selectedElement = selection.iterator().next();
+ if (selectedElement instanceof IResource) {
+ // Get the resource parent, if its a file.
+ //
+ IResource selectedResource = (IResource)selectedElement;
+ if (selectedResource.getType() == IResource.FILE) {
+ selectedResource = selectedResource.getParent();
+ }
+
+ // This gives us a directory...
+ //
+ if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+ // Set this for the container.
+ //
+ newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+ // Make up a unique new name here.
+ //
+ String defaultModelBaseFilename = LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditorFilenameDefaultBase");
+ String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+ String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+ for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+ modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+ }
+ newFileCreationPage.setFileName(modelFilename);
+ }
+ }
+ }
+ initialObjectCreationPage = new LayersconfigModelWizardInitialObjectCreationPage("Whatever2");
+ initialObjectCreationPage.setTitle(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigModelWizard_label"));
+ initialObjectCreationPage.setDescription(LayersconfigEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+ addPage(initialObjectCreationPage);
+ }
+
+ /**
+ * Get the file from the page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IFile getModelFile() {
+ return newFileCreationPage.getModelFile();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersActionBarContributor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersActionBarContributor.java
new file mode 100644
index 00000000000..7fb9220896b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersActionBarContributor.java
@@ -0,0 +1,433 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Layers model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersActionBarContributor
+ extends EditingDomainActionBarContributor
+ implements ISelectionChangedListener {
+ /**
+ * This keeps track of the active editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IEditorPart activeEditorPart;
+
+ /**
+ * This keeps track of the current selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelectionProvider selectionProvider;
+
+ /**
+ * This action opens the Properties view.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction showPropertiesViewAction =
+ new Action(LayersEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+ @Override
+ public void run() {
+ try {
+ getPage().showView("org.eclipse.ui.views.PropertySheet");
+ }
+ catch (PartInitException exception) {
+ LayersEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * This action refreshes the viewer of the current editor if the editor
+ * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IAction refreshViewerAction =
+ new Action(LayersEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+ @Override
+ public boolean isEnabled() {
+ return activeEditorPart instanceof IViewerProvider;
+ }
+
+ @Override
+ public void run() {
+ if (activeEditorPart instanceof IViewerProvider) {
+ Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+ if (viewer != null) {
+ viewer.refresh();
+ }
+ }
+ }
+ };
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createChildActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createChildMenuManager;
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> createSiblingActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IMenuManager createSiblingMenuManager;
+
+ /**
+ * This creates an instance of the contributor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersActionBarContributor() {
+ super(ADDITIONS_LAST_STYLE);
+ loadResourceAction = new LoadResourceAction();
+ validateAction = new ValidateAction();
+ controlAction = new ControlAction();
+ }
+
+ /**
+ * This adds Separators for editor additions to the tool bar.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void contributeToToolBar(IToolBarManager toolBarManager) {
+ toolBarManager.add(new Separator("layers-settings"));
+ toolBarManager.add(new Separator("layers-additions"));
+ }
+
+ /**
+ * This adds to the menu bar a menu and some separators for editor additions,
+ * as well as the sub-menus for object creation items.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void contributeToMenu(IMenuManager menuManager) {
+ super.contributeToMenu(menuManager);
+
+ IMenuManager submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditor_menu"), "org.eclipse.papyrus.layers.stackmodel.layersMenuID");
+ menuManager.insertAfter("additions", submenuManager);
+ submenuManager.add(new Separator("settings"));
+ submenuManager.add(new Separator("actions"));
+ submenuManager.add(new Separator("additions"));
+ submenuManager.add(new Separator("additions-end"));
+
+ // Prepare for CreateChild item addition or removal.
+ //
+ createChildMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ submenuManager.insertBefore("additions", createChildMenuManager);
+
+ // Prepare for CreateSibling item addition or removal.
+ //
+ createSiblingMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+ // Force an update because Eclipse hides empty menus now.
+ //
+ submenuManager.addMenuListener
+ (new IMenuListener() {
+ public void menuAboutToShow(IMenuManager menuManager) {
+ menuManager.updateAll(true);
+ }
+ });
+
+ addGlobalActions(submenuManager);
+ }
+
+ /**
+ * When the active editor changes, this remembers the change and registers with it as a selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setActiveEditor(IEditorPart part) {
+ super.setActiveEditor(part);
+ activeEditorPart = part;
+
+ // Switch to the new selection provider.
+ //
+ if (selectionProvider != null) {
+ selectionProvider.removeSelectionChangedListener(this);
+ }
+ if (part == null) {
+ selectionProvider = null;
+ }
+ else {
+ selectionProvider = part.getSite().getSelectionProvider();
+ selectionProvider.addSelectionChangedListener(this);
+
+ // Fake a selection changed event to update the menus.
+ //
+ if (selectionProvider.getSelection() != null) {
+ selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+ }
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+ * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+ * that can be added to the selected object and updating the menus accordingly.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ // Remove any menu items for old selection.
+ //
+ if (createChildMenuManager != null) {
+ depopulateManager(createChildMenuManager, createChildActions);
+ }
+ if (createSiblingMenuManager != null) {
+ depopulateManager(createSiblingMenuManager, createSiblingActions);
+ }
+
+ // Query the new selection for appropriate new child/sibling descriptors
+ //
+ Collection<?> newChildDescriptors = null;
+ Collection<?> newSiblingDescriptors = null;
+
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+ Object object = ((IStructuredSelection)selection).getFirstElement();
+
+ EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+ newChildDescriptors = domain.getNewChildDescriptors(object, null);
+ newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+ }
+
+ // Generate actions for selection; populate and redraw the menus.
+ //
+ createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+ createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+ if (createChildMenuManager != null) {
+ populateManager(createChildMenuManager, createChildActions, null);
+ createChildMenuManager.update(true);
+ }
+ if (createSiblingMenuManager != null) {
+ populateManager(createSiblingMenuManager, createSiblingActions, null);
+ createSiblingMenuManager.update(true);
+ }
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+ * by inserting them before the specified contribution item <code>contributionID</code>.
+ * If <code>contributionID</code> is <code>null</code>, they are simply added.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+ if (actions != null) {
+ for (IAction action : actions) {
+ if (contributionID != null) {
+ manager.insertBefore(contributionID, action);
+ }
+ else {
+ manager.add(action);
+ }
+ }
+ }
+ }
+
+ /**
+ * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+ if (actions != null) {
+ IContributionItem[] items = manager.getItems();
+ for (int i = 0; i < items.length; i++) {
+ // Look into SubContributionItems
+ //
+ IContributionItem contributionItem = items[i];
+ while (contributionItem instanceof SubContributionItem) {
+ contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+ }
+
+ // Delete the ActionContributionItems with matching action.
+ //
+ if (contributionItem instanceof ActionContributionItem) {
+ IAction action = ((ActionContributionItem)contributionItem).getAction();
+ if (actions.contains(action)) {
+ manager.remove(contributionItem);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This populates the pop-up menu before it appears.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void menuAboutToShow(IMenuManager menuManager) {
+ super.menuAboutToShow(menuManager);
+ MenuManager submenuManager = null;
+
+ submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ populateManager(submenuManager, createChildActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+
+ submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ populateManager(submenuManager, createSiblingActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+ }
+
+ /**
+ * This inserts global actions before the "additions-end" separator.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void addGlobalActions(IMenuManager menuManager) {
+ menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+ menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+ refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+ menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+ super.addGlobalActions(menuManager);
+ }
+
+ /**
+ * This ensures that a delete action will clean up all references to deleted objects.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean removeAllReferencesOnDelete() {
+ return true;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditor.java
new file mode 100644
index 00000000000..01a0d726cd9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditor.java
@@ -0,0 +1,1837 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory;
+
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+
+import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Layers model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersEditor
+ extends MultiPageEditorPart
+ implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+ /**
+ * This keeps track of the editing domain that is used to track all changes to the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AdapterFactoryEditingDomain editingDomain;
+
+ /**
+ * This is the one adapter factory used for providing views of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory adapterFactory;
+
+ /**
+ * This is the content outline page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IContentOutlinePage contentOutlinePage;
+
+ /**
+ * This is a kludge...
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IStatusLineManager contentOutlineStatusLineManager;
+
+ /**
+ * This is the content outline page's viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer contentOutlineViewer;
+
+ /**
+ * This is the property sheet page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+ /**
+ * This is the viewer that shadows the selection in the content outline.
+ * The parent relation must be correctly defined for this to work.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer selectionViewer;
+
+ /**
+ * This inverts the roll of parent and child in the content provider and show parents as a tree.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer parentViewer;
+
+ /**
+ * This shows how a tree view works.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer treeViewer;
+
+ /**
+ * This shows how a list view works.
+ * A list viewer doesn't support icons.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ListViewer listViewer;
+
+ /**
+ * This shows how a table view works.
+ * A table can be used as a list with icons.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TableViewer tableViewer;
+
+ /**
+ * This shows how a tree view with columns works.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TreeViewer treeViewerWithColumns;
+
+ /**
+ * This keeps track of the active viewer pane, in the book.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ViewerPane currentViewerPane;
+
+ /**
+ * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Viewer currentViewer;
+
+ /**
+ * This listens to which ever viewer is active.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelectionChangedListener selectionChangedListener;
+
+ /**
+ * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+ /**
+ * This keeps track of the selection of the editor as a whole.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+ /**
+ * The MarkerHelper is responsible for creating workspace resource markers presented
+ * in Eclipse's Problems View.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+ /**
+ * This listens for when the outline becomes active
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IPartListener partListener =
+ new IPartListener() {
+ public void partActivated(IWorkbenchPart p) {
+ if (p instanceof ContentOutline) {
+ if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+ getActionBarContributor().setActiveEditor(LayersEditor.this);
+
+ setCurrentViewer(contentOutlineViewer);
+ }
+ }
+ else if (p instanceof PropertySheet) {
+ if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+ getActionBarContributor().setActiveEditor(LayersEditor.this);
+ handleActivate();
+ }
+ }
+ else if (p == LayersEditor.this) {
+ handleActivate();
+ }
+ }
+ public void partBroughtToTop(IWorkbenchPart p) {
+ // Ignore.
+ }
+ public void partClosed(IWorkbenchPart p) {
+ // Ignore.
+ }
+ public void partDeactivated(IWorkbenchPart p) {
+ // Ignore.
+ }
+ public void partOpened(IWorkbenchPart p) {
+ // Ignore.
+ }
+ };
+
+ /**
+ * Resources that have been removed since last activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+ /**
+ * Resources that have been changed since last activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+ /**
+ * Resources that have been saved.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+ /**
+ * Map to store the diagnostic associated with a resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+ /**
+ * Controls whether the problem indication should be updated.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean updateProblemIndication = true;
+
+ /**
+ * Adapter used to update the problem indication when resources are demanded loaded.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EContentAdapter problemIndicationAdapter =
+ new EContentAdapter() {
+ @Override
+ public void notifyChanged(Notification notification) {
+ if (notification.getNotifier() instanceof Resource) {
+ switch (notification.getFeatureID(Resource.class)) {
+ case Resource.RESOURCE__IS_LOADED:
+ case Resource.RESOURCE__ERRORS:
+ case Resource.RESOURCE__WARNINGS: {
+ Resource resource = (Resource)notification.getNotifier();
+ Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ resourceToDiagnosticMap.put(resource, diagnostic);
+ }
+ else {
+ resourceToDiagnosticMap.remove(resource);
+ }
+
+ if (updateProblemIndication) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ updateProblemIndication();
+ }
+ });
+ }
+ break;
+ }
+ }
+ }
+ else {
+ super.notifyChanged(notification);
+ }
+ }
+
+ @Override
+ protected void setTarget(Resource target) {
+ basicSetTarget(target);
+ }
+
+ @Override
+ protected void unsetTarget(Resource target) {
+ basicUnsetTarget(target);
+ resourceToDiagnosticMap.remove(target);
+ if (updateProblemIndication) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ updateProblemIndication();
+ }
+ });
+ }
+ }
+ };
+
+ /**
+ * This listens for workspace changes.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IResourceChangeListener resourceChangeListener =
+ new IResourceChangeListener() {
+ public void resourceChanged(IResourceChangeEvent event) {
+ IResourceDelta delta = event.getDelta();
+ try {
+ class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+ protected ResourceSet resourceSet = editingDomain.getResourceSet();
+ protected Collection<Resource> changedResources = new ArrayList<Resource>();
+ protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+ public boolean visit(IResourceDelta delta) {
+ if (delta.getResource().getType() == IResource.FILE) {
+ if (delta.getKind() == IResourceDelta.REMOVED ||
+ delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+ Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+ if (resource != null) {
+ if (delta.getKind() == IResourceDelta.REMOVED) {
+ removedResources.add(resource);
+ }
+ else if (!savedResources.remove(resource)) {
+ changedResources.add(resource);
+ }
+ }
+ }
+ return false;
+ }
+
+ return true;
+ }
+
+ public Collection<Resource> getChangedResources() {
+ return changedResources;
+ }
+
+ public Collection<Resource> getRemovedResources() {
+ return removedResources;
+ }
+ }
+
+ final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+ delta.accept(visitor);
+
+ if (!visitor.getRemovedResources().isEmpty()) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ removedResources.addAll(visitor.getRemovedResources());
+ if (!isDirty()) {
+ getSite().getPage().closeEditor(LayersEditor.this, false);
+ }
+ }
+ });
+ }
+
+ if (!visitor.getChangedResources().isEmpty()) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ changedResources.addAll(visitor.getChangedResources());
+ if (getSite().getPage().getActiveEditor() == LayersEditor.this) {
+ handleActivate();
+ }
+ }
+ });
+ }
+ }
+ catch (CoreException exception) {
+ LayersEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * Handles activation of the editor or it's associated views.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void handleActivate() {
+ // Recompute the read only state.
+ //
+ if (editingDomain.getResourceToReadOnlyMap() != null) {
+ editingDomain.getResourceToReadOnlyMap().clear();
+
+ // Refresh any actions that may become enabled or disabled.
+ //
+ setSelection(getSelection());
+ }
+
+ if (!removedResources.isEmpty()) {
+ if (handleDirtyConflict()) {
+ getSite().getPage().closeEditor(LayersEditor.this, false);
+ }
+ else {
+ removedResources.clear();
+ changedResources.clear();
+ savedResources.clear();
+ }
+ }
+ else if (!changedResources.isEmpty()) {
+ changedResources.removeAll(savedResources);
+ handleChangedResources();
+ changedResources.clear();
+ savedResources.clear();
+ }
+ }
+
+ /**
+ * Handles what to do with changed resources on activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void handleChangedResources() {
+ if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+ if (isDirty()) {
+ changedResources.addAll(editingDomain.getResourceSet().getResources());
+ }
+ editingDomain.getCommandStack().flush();
+
+ updateProblemIndication = false;
+ for (Resource resource : changedResources) {
+ if (resource.isLoaded()) {
+ resource.unload();
+ try {
+ resource.load(Collections.EMPTY_MAP);
+ }
+ catch (IOException exception) {
+ if (!resourceToDiagnosticMap.containsKey(resource)) {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ }
+ }
+ }
+
+ if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+ setSelection(StructuredSelection.EMPTY);
+ }
+
+ updateProblemIndication = true;
+ updateProblemIndication();
+ }
+ }
+
+ /**
+ * Updates the problems indication with the information described in the specified diagnostic.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void updateProblemIndication() {
+ if (updateProblemIndication) {
+ BasicDiagnostic diagnostic =
+ new BasicDiagnostic
+ (Diagnostic.OK,
+ "org.eclipse.papyrus.layers.stackmodel.editor",
+ 0,
+ null,
+ new Object [] { editingDomain.getResourceSet() });
+ for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+ if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+ diagnostic.add(childDiagnostic);
+ }
+ }
+
+ int lastEditorPage = getPageCount() - 1;
+ if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+ ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ setActivePage(lastEditorPage);
+ }
+ }
+ else if (diagnostic.getSeverity() != Diagnostic.OK) {
+ ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+ problemEditorPart.setDiagnostic(diagnostic);
+ problemEditorPart.setMarkerHelper(markerHelper);
+ try {
+ addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+ setPageText(lastEditorPage, problemEditorPart.getPartName());
+ setActivePage(lastEditorPage);
+ showTabs();
+ }
+ catch (PartInitException exception) {
+ LayersEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+ markerHelper.deleteMarkers(editingDomain.getResourceSet());
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ try {
+ markerHelper.createMarkers(diagnostic);
+ }
+ catch (CoreException exception) {
+ LayersEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Shows a dialog that asks if conflicting changes should be discarded.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean handleDirtyConflict() {
+ return
+ MessageDialog.openQuestion
+ (getSite().getShell(),
+ getString("_UI_FileConflict_label"),
+ getString("_WARN_FileConflict"));
+ }
+
+ /**
+ * This creates a model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersEditor() {
+ super();
+ initializeEditingDomain();
+ }
+
+ /**
+ * This sets up the editing domain for the model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void initializeEditingDomain() {
+ // Create an adapter factory that yields item providers.
+ //
+ adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new LayersItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new NotationItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+ // Create the command stack that will notify this editor as commands are executed.
+ //
+ BasicCommandStack commandStack = new BasicCommandStack();
+
+ // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+ //
+ commandStack.addCommandStackListener
+ (new CommandStackListener() {
+ public void commandStackChanged(final EventObject event) {
+ getContainer().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+
+ // Try to select the affected objects.
+ //
+ Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+ if (mostRecentCommand != null) {
+ setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+ }
+ for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+ PropertySheetPage propertySheetPage = i.next();
+ if (propertySheetPage.getControl().isDisposed()) {
+ i.remove();
+ }
+ else {
+ propertySheetPage.refresh();
+ }
+ }
+ }
+ });
+ }
+ });
+
+ // Create the editing domain with a special command stack.
+ //
+ editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+ }
+
+ /**
+ * This is here for the listener to be able to call it.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void firePropertyChange(int action) {
+ super.firePropertyChange(action);
+ }
+
+ /**
+ * This sets the selection into whichever viewer is active.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSelectionToViewer(Collection<?> collection) {
+ final Collection<?> theSelection = collection;
+ // Make sure it's okay.
+ //
+ if (theSelection != null && !theSelection.isEmpty()) {
+ Runnable runnable =
+ new Runnable() {
+ public void run() {
+ // Try to select the items in the current content viewer of the editor.
+ //
+ if (currentViewer != null) {
+ currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+ }
+ }
+ };
+ getSite().getShell().getDisplay().asyncExec(runnable);
+ }
+ }
+
+ /**
+ * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+ * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+ * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EditingDomain getEditingDomain() {
+ return editingDomain;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object [] getElements(Object object) {
+ Object parent = super.getParent(object);
+ return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object [] getChildren(Object object) {
+ Object parent = super.getParent(object);
+ return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean hasChildren(Object object) {
+ Object parent = super.getParent(object);
+ return parent != null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getParent(Object object) {
+ return null;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCurrentViewerPane(ViewerPane viewerPane) {
+ if (currentViewerPane != viewerPane) {
+ if (currentViewerPane != null) {
+ currentViewerPane.showFocus(false);
+ }
+ currentViewerPane = viewerPane;
+ }
+ setCurrentViewer(currentViewerPane.getViewer());
+ }
+
+ /**
+ * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+ * is the current one.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCurrentViewer(Viewer viewer) {
+ // If it is changing...
+ //
+ if (currentViewer != viewer) {
+ if (selectionChangedListener == null) {
+ // Create the listener on demand.
+ //
+ selectionChangedListener =
+ new ISelectionChangedListener() {
+ // This just notifies those things that are affected by the section.
+ //
+ public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+ setSelection(selectionChangedEvent.getSelection());
+ }
+ };
+ }
+
+ // Stop listening to the old one.
+ //
+ if (currentViewer != null) {
+ currentViewer.removeSelectionChangedListener(selectionChangedListener);
+ }
+
+ // Start listening to the new one.
+ //
+ if (viewer != null) {
+ viewer.addSelectionChangedListener(selectionChangedListener);
+ }
+
+ // Remember it.
+ //
+ currentViewer = viewer;
+
+ // Set the editors selection based on the current viewer's selection.
+ //
+ setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+ }
+ }
+
+ /**
+ * This returns the viewer as required by the {@link IViewerProvider} interface.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Viewer getViewer() {
+ return currentViewer;
+ }
+
+ /**
+ * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected void createContextMenuFor(StructuredViewer viewer) {
+ MenuManager contextMenu = new MenuManager("#PopUp");
+ contextMenu.add(new Separator("additions"));
+ contextMenu.setRemoveAllWhenShown(true);
+ contextMenu.addMenuListener(this);
+ Menu menu= contextMenu.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+// getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+ String menuId = "org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu";
+ getSite().registerContextMenu(menuId, contextMenu, new UnwrappingSelectionProvider(viewer));
+
+ int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+ Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+ viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+ viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+ }
+
+ /**
+ * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createModel() {
+ URI resourceURI = EditUIUtil.getURI(getEditorInput());
+ Exception exception = null;
+ Resource resource = null;
+ try {
+ // Load the resource through the editing domain.
+ //
+ resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+ }
+ catch (Exception e) {
+ exception = e;
+ resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+ }
+
+ Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+ }
+
+ /**
+ * Returns a diagnostic describing the errors and warnings listed in the resource
+ * and the specified exception (if any).
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+ if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+ BasicDiagnostic basicDiagnostic =
+ new BasicDiagnostic
+ (Diagnostic.ERROR,
+ "org.eclipse.papyrus.layers.stackmodel.editor",
+ 0,
+ getString("_UI_CreateModelError_message", resource.getURI()),
+ new Object [] { exception == null ? (Object)resource : exception });
+ basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+ return basicDiagnostic;
+ }
+ else if (exception != null) {
+ return
+ new BasicDiagnostic
+ (Diagnostic.ERROR,
+ "org.eclipse.papyrus.layers.stackmodel.editor",
+ 0,
+ getString("_UI_CreateModelError_message", resource.getURI()),
+ new Object[] { exception });
+ }
+ else {
+ return Diagnostic.OK_INSTANCE;
+ }
+ }
+
+ /**
+ * This is the method used by the framework to install your own controls.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void createPages() {
+ // Creates the model from the editor input
+ //
+ createModel();
+
+ // Only creates the other pages if there is something that can be edited
+ //
+ if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+ // Create a page for the selection tree view.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ Tree tree = new Tree(composite, SWT.MULTI);
+ TreeViewer newTreeViewer = new TreeViewer(tree);
+ return newTreeViewer;
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+
+ selectionViewer = (TreeViewer)viewerPane.getViewer();
+ selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+ selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+ selectionViewer.setInput(editingDomain.getResourceSet());
+ selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+ viewerPane.setTitle(editingDomain.getResourceSet());
+
+ new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+ createContextMenuFor(selectionViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+ }
+
+ // Create a page for the parent tree view.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ Tree tree = new Tree(composite, SWT.MULTI);
+ TreeViewer newTreeViewer = new TreeViewer(tree);
+ return newTreeViewer;
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+
+ parentViewer = (TreeViewer)viewerPane.getViewer();
+ parentViewer.setAutoExpandLevel(30);
+ parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+ parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(parentViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_ParentPage_label"));
+ }
+
+ // This is the page for the list viewer
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ return new ListViewer(composite);
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+ listViewer = (ListViewer)viewerPane.getViewer();
+ listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(listViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_ListPage_label"));
+ }
+
+ // This is the page for the tree viewer
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ return new TreeViewer(composite);
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+ treeViewer = (TreeViewer)viewerPane.getViewer();
+ treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+ createContextMenuFor(treeViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_TreePage_label"));
+ }
+
+ // This is the page for the table viewer.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ return new TableViewer(composite);
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+ tableViewer = (TableViewer)viewerPane.getViewer();
+
+ Table table = tableViewer.getTable();
+ TableLayout layout = new TableLayout();
+ table.setLayout(layout);
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+ layout.addColumnData(new ColumnWeightData(3, 100, true));
+ objectColumn.setText(getString("_UI_ObjectColumn_label"));
+ objectColumn.setResizable(true);
+
+ TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+ layout.addColumnData(new ColumnWeightData(2, 100, true));
+ selfColumn.setText(getString("_UI_SelfColumn_label"));
+ selfColumn.setResizable(true);
+
+ tableViewer.setColumnProperties(new String [] {"a", "b"});
+ tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(tableViewer);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_TablePage_label"));
+ }
+
+ // This is the page for the table tree viewer.
+ //
+ {
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), LayersEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ return new TreeViewer(composite);
+ }
+ @Override
+ public void requestActivation() {
+ super.requestActivation();
+ setCurrentViewerPane(this);
+ }
+ };
+ viewerPane.createControl(getContainer());
+
+ treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+ Tree tree = treeViewerWithColumns.getTree();
+ tree.setLayoutData(new FillLayout());
+ tree.setHeaderVisible(true);
+ tree.setLinesVisible(true);
+
+ TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+ objectColumn.setText(getString("_UI_ObjectColumn_label"));
+ objectColumn.setResizable(true);
+ objectColumn.setWidth(250);
+
+ TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+ selfColumn.setText(getString("_UI_SelfColumn_label"));
+ selfColumn.setResizable(true);
+ selfColumn.setWidth(200);
+
+ treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+ treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+ createContextMenuFor(treeViewerWithColumns);
+ int pageIndex = addPage(viewerPane.getControl());
+ setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+ }
+
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ setActivePage(0);
+ }
+ });
+ }
+
+ // Ensures that this editor will only display the page's tab
+ // area if there are more than one page
+ //
+ getContainer().addControlListener
+ (new ControlAdapter() {
+ boolean guard = false;
+ @Override
+ public void controlResized(ControlEvent event) {
+ if (!guard) {
+ guard = true;
+ hideTabs();
+ guard = false;
+ }
+ }
+ });
+
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ updateProblemIndication();
+ }
+ });
+ }
+
+ /**
+ * If there is just one page in the multi-page editor part,
+ * this hides the single tab at the bottom.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void hideTabs() {
+ if (getPageCount() <= 1) {
+ setPageText(0, "");
+ if (getContainer() instanceof CTabFolder) {
+ ((CTabFolder)getContainer()).setTabHeight(1);
+ Point point = getContainer().getSize();
+ getContainer().setSize(point.x, point.y + 6);
+ }
+ }
+ }
+
+ /**
+ * If there is more than one page in the multi-page editor part,
+ * this shows the tabs at the bottom.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void showTabs() {
+ if (getPageCount() > 1) {
+ setPageText(0, getString("_UI_SelectionPage_label"));
+ if (getContainer() instanceof CTabFolder) {
+ ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+ Point point = getContainer().getSize();
+ getContainer().setSize(point.x, point.y - 6);
+ }
+ }
+ }
+
+ /**
+ * This is used to track the active viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void pageChange(int pageIndex) {
+ super.pageChange(pageIndex);
+
+ if (contentOutlinePage != null) {
+ handleContentOutlineSelection(contentOutlinePage.getSelection());
+ }
+ }
+
+ /**
+ * This is how the framework determines which interfaces we implement.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Object getAdapter(Class key) {
+ if (key.equals(IContentOutlinePage.class)) {
+ return showOutlineView() ? getContentOutlinePage() : null;
+ }
+ else if (key.equals(IPropertySheetPage.class)) {
+ return getPropertySheetPage();
+ }
+ else if (key.equals(IGotoMarker.class)) {
+ return this;
+ }
+ else {
+ return super.getAdapter(key);
+ }
+ }
+
+ /**
+ * This accesses a cached version of the content outliner.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IContentOutlinePage getContentOutlinePage() {
+ if (contentOutlinePage == null) {
+ // The content outline is just a tree.
+ //
+ class MyContentOutlinePage extends ContentOutlinePage {
+ @Override
+ public void createControl(Composite parent) {
+ super.createControl(parent);
+ contentOutlineViewer = getTreeViewer();
+ contentOutlineViewer.addSelectionChangedListener(this);
+
+ // Set up the tree viewer.
+ //
+ contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+ contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+ // Make sure our popups work.
+ //
+ createContextMenuFor(contentOutlineViewer);
+
+ if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+ // Select the root object in the view.
+ //
+ contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+ }
+ }
+
+ @Override
+ public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+ super.makeContributions(menuManager, toolBarManager, statusLineManager);
+ contentOutlineStatusLineManager = statusLineManager;
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars) {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ }
+
+ contentOutlinePage = new MyContentOutlinePage();
+
+ // Listen to selection so that we can handle it is a special way.
+ //
+ contentOutlinePage.addSelectionChangedListener
+ (new ISelectionChangedListener() {
+ // This ensures that we handle selections correctly.
+ //
+ public void selectionChanged(SelectionChangedEvent event) {
+ handleContentOutlineSelection(event.getSelection());
+ }
+ });
+ }
+
+ return contentOutlinePage;
+ }
+
+ /**
+ * This accesses a cached version of the property sheet.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IPropertySheetPage getPropertySheetPage() {
+ PropertySheetPage propertySheetPage =
+ new ExtendedPropertySheetPage(editingDomain) {
+ @Override
+ public void setSelectionToViewer(List<?> selection) {
+ LayersEditor.this.setSelectionToViewer(selection);
+ LayersEditor.this.setFocus();
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars) {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ };
+ propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+ propertySheetPages.add(propertySheetPage);
+
+ return propertySheetPage;
+ }
+
+ /**
+ * This deals with how we want selection in the outliner to affect the other views.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void handleContentOutlineSelection(ISelection selection) {
+ if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+ Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+ if (selectedElements.hasNext()) {
+ // Get the first selected element.
+ //
+ Object selectedElement = selectedElements.next();
+
+ // If it's the selection viewer, then we want it to select the same selection as this selection.
+ //
+ if (currentViewerPane.getViewer() == selectionViewer) {
+ ArrayList<Object> selectionList = new ArrayList<Object>();
+ selectionList.add(selectedElement);
+ while (selectedElements.hasNext()) {
+ selectionList.add(selectedElements.next());
+ }
+
+ // Set the selection to the widget.
+ //
+ selectionViewer.setSelection(new StructuredSelection(selectionList));
+ }
+ else {
+ // Set the input to the widget.
+ //
+ if (currentViewerPane.getViewer().getInput() != selectedElement) {
+ currentViewerPane.getViewer().setInput(selectedElement);
+ currentViewerPane.setTitle(selectedElement);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This is for implementing {@link IEditorPart} and simply tests the command stack.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isDirty() {
+ return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+ }
+
+ /**
+ * This is for implementing {@link IEditorPart} and simply saves the model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void doSave(IProgressMonitor progressMonitor) {
+ // Save only resources that have actually changed.
+ //
+ final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+ saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+ saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+ // Do the work within an operation because this is a long running activity that modifies the workbench.
+ //
+ WorkspaceModifyOperation operation =
+ new WorkspaceModifyOperation() {
+ // This is the method that gets invoked when the operation runs.
+ //
+ @Override
+ public void execute(IProgressMonitor monitor) {
+ // Save the resources to the file system.
+ //
+ boolean first = true;
+ for (Resource resource : editingDomain.getResourceSet().getResources()) {
+ if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+ try {
+ long timeStamp = resource.getTimeStamp();
+ resource.save(saveOptions);
+ if (resource.getTimeStamp() != timeStamp) {
+ savedResources.add(resource);
+ }
+ }
+ catch (Exception exception) {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ first = false;
+ }
+ }
+ }
+ };
+
+ updateProblemIndication = false;
+ try {
+ // This runs the options, and shows progress.
+ //
+ new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+ // Refresh the necessary state.
+ //
+ ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+ }
+ catch (Exception exception) {
+ // Something went wrong that shouldn't.
+ //
+ LayersEditorPlugin.INSTANCE.log(exception);
+ }
+ updateProblemIndication = true;
+ updateProblemIndication();
+ }
+
+ /**
+ * This returns whether something has been persisted to the URI of the specified resource.
+ * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean isPersisted(Resource resource) {
+ boolean result = false;
+ try {
+ InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+ if (stream != null) {
+ result = true;
+ stream.close();
+ }
+ }
+ catch (IOException e) {
+ // Ignore
+ }
+ return result;
+ }
+
+ /**
+ * This always returns true because it is not currently supported.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isSaveAsAllowed() {
+ return true;
+ }
+
+ /**
+ * This also changes the editor's input.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void doSaveAs() {
+ SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+ saveAsDialog.open();
+ IPath path = saveAsDialog.getResult();
+ if (path != null) {
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+ if (file != null) {
+ doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void doSaveAs(URI uri, IEditorInput editorInput) {
+ (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+ setInputWithNotify(editorInput);
+ setPartName(editorInput.getName());
+ IProgressMonitor progressMonitor =
+ getActionBars().getStatusLineManager() != null ?
+ getActionBars().getStatusLineManager().getProgressMonitor() :
+ new NullProgressMonitor();
+ doSave(progressMonitor);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void gotoMarker(IMarker marker) {
+ List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+ if (!targetObjects.isEmpty()) {
+ setSelectionToViewer(targetObjects);
+ }
+ }
+
+ /**
+ * This is called during startup.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void init(IEditorSite site, IEditorInput editorInput) {
+ setSite(site);
+ setInputWithNotify(editorInput);
+ setPartName(editorInput.getName());
+ site.setSelectionProvider(this);
+ site.getPage().addPartListener(partListener);
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setFocus() {
+ if (currentViewerPane != null) {
+ currentViewerPane.setFocus();
+ }
+ else {
+ getControl(getActivePage()).setFocus();
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionChangedListeners.add(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionChangedListeners.remove(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ISelection getSelection() {
+ return editorSelection;
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+ * Calling this result will notify the listeners.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSelection(ISelection selection) {
+ editorSelection = selection;
+
+ for (ISelectionChangedListener listener : selectionChangedListeners) {
+ listener.selectionChanged(new SelectionChangedEvent(this, selection));
+ }
+ setStatusLineManager(selection);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStatusLineManager(ISelection selection) {
+ IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+ contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+ if (statusLineManager != null) {
+ if (selection instanceof IStructuredSelection) {
+ Collection<?> collection = ((IStructuredSelection)selection).toList();
+ switch (collection.size()) {
+ case 0: {
+ statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+ break;
+ }
+ case 1: {
+ String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+ statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+ break;
+ }
+ default: {
+ statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+ break;
+ }
+ }
+ }
+ else {
+ statusLineManager.setMessage("");
+ }
+ }
+ }
+
+ /**
+ * This looks up a string in the plugin's plugin.properties file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static String getString(String key) {
+ return LayersEditorPlugin.INSTANCE.getString(key);
+ }
+
+ /**
+ * This looks up a string in plugin.properties, making a substitution.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static String getString(String key, Object s1) {
+ return LayersEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void menuAboutToShow(IMenuManager menuManager) {
+ ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EditingDomainActionBarContributor getActionBarContributor() {
+ return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IActionBars getActionBars() {
+ return getActionBarContributor().getActionBars();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AdapterFactory getAdapterFactory() {
+ return adapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void dispose() {
+ updateProblemIndication = false;
+
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+ getSite().getPage().removePartListener(partListener);
+
+ adapterFactory.dispose();
+
+ if (getActionBarContributor().getActiveEditor() == this) {
+ getActionBarContributor().setActiveEditor(null);
+ }
+
+ for (PropertySheetPage propertySheetPage : propertySheetPages) {
+ propertySheetPage.dispose();
+ }
+
+ if (contentOutlinePage != null) {
+ contentOutlinePage.dispose();
+ }
+
+ super.dispose();
+ }
+
+ /**
+ * Returns whether the outline view should be presented to the user.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean showOutlineView() {
+ return true;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditorPlugin.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditorPlugin.java
new file mode 100644
index 00000000000..cbce7016cf2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditorPlugin.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.presentation;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+
+import org.eclipse.gmf.runtime.notation.NotationEditPlugin;
+
+/**
+ * This is the central singleton for the Layers editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class LayersEditorPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final LayersEditorPlugin INSTANCE = new LayersEditorPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersEditorPlugin() {
+ super
+ (new ResourceLocator [] {
+ EcoreEditPlugin.INSTANCE,
+ NotationEditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipseUIPlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersModelWizard.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersModelWizard.java
new file mode 100644
index 00000000000..09d8eb51201
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersModelWizard.java
@@ -0,0 +1,637 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersEditPlugin;
+
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersModelWizard extends Wizard implements INewWizard {
+ /**
+ * The supported extensions for created files.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<String> FILE_EXTENSIONS =
+ Collections.unmodifiableList(Arrays.asList(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditorFilenameExtensions").split("\\s*,\\s*")));
+
+ /**
+ * A formatted list of supported file extensions, suitable for display.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String FORMATTED_FILE_EXTENSIONS =
+ LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+ /**
+ * This caches an instance of the model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersPackage layersPackage = LayersPackage.eINSTANCE;
+
+ /**
+ * This caches an instance of the model factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersFactory layersFactory = layersPackage.getLayersFactory();
+
+ /**
+ * This is the file creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersModelWizardNewFileCreationPage newFileCreationPage;
+
+ /**
+ * This is the initial object creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+ /**
+ * Remember the selection during initialization for populating the default container.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IStructuredSelection selection;
+
+ /**
+ * Remember the workbench during initialization.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IWorkbench workbench;
+
+ /**
+ * Caches the names of the types that can be created as the root object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected List<String> initialObjectNames;
+
+ /**
+ * This just records the information.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ this.workbench = workbench;
+ this.selection = selection;
+ setWindowTitle(LayersEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+ setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(LayersEditorPlugin.INSTANCE.getImage("full/wizban/NewLayers")));
+ }
+
+ /**
+ * Returns the names of the types that can be created as the root object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<String> getInitialObjectNames() {
+ if (initialObjectNames == null) {
+ initialObjectNames = new ArrayList<String>();
+ for (EClassifier eClassifier : layersPackage.getEClassifiers()) {
+ if (eClassifier instanceof EClass) {
+ EClass eClass = (EClass)eClassifier;
+ if (!eClass.isAbstract()) {
+ initialObjectNames.add(eClass.getName());
+ }
+ }
+ }
+ Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+ }
+ return initialObjectNames;
+ }
+
+ /**
+ * Create a new model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EObject createInitialModel() {
+ EClass eClass = (EClass)layersPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+ EObject rootObject = layersFactory.create(eClass);
+ return rootObject;
+ }
+
+ /**
+ * Do the work after everything is specified.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean performFinish() {
+ try {
+ // Remember the file.
+ //
+ final IFile modelFile = getModelFile();
+
+ // Do the work within an operation.
+ //
+ WorkspaceModifyOperation operation =
+ new WorkspaceModifyOperation() {
+ @Override
+ protected void execute(IProgressMonitor progressMonitor) {
+ try {
+ // Create a resource set
+ //
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ // Get the URI of the model file.
+ //
+ URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+ // Create a resource for this file.
+ //
+ Resource resource = resourceSet.createResource(fileURI);
+
+ // Add the initial model object to the contents.
+ //
+ EObject rootObject = createInitialModel();
+ if (rootObject != null) {
+ resource.getContents().add(rootObject);
+ }
+
+ // Save the contents of the resource to the file system.
+ //
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+ resource.save(options);
+ }
+ catch (Exception exception) {
+ LayersEditorPlugin.INSTANCE.log(exception);
+ }
+ finally {
+ progressMonitor.done();
+ }
+ }
+ };
+
+ getContainer().run(false, false, operation);
+
+ // Select the new file resource in the current view.
+ //
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IWorkbenchPage page = workbenchWindow.getActivePage();
+ final IWorkbenchPart activePart = page.getActivePart();
+ if (activePart instanceof ISetSelectionTarget) {
+ final ISelection targetSelection = new StructuredSelection(modelFile);
+ getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+ }
+ });
+ }
+
+ // Open an editor on the new file.
+ //
+ try {
+ page.openEditor
+ (new FileEditorInput(modelFile),
+ workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
+ }
+ catch (PartInitException exception) {
+ MessageDialog.openError(workbenchWindow.getShell(), LayersEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+ return false;
+ }
+
+ return true;
+ }
+ catch (Exception exception) {
+ LayersEditorPlugin.INSTANCE.log(exception);
+ return false;
+ }
+ }
+
+ /**
+ * This is the one page of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class LayersModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+ super(pageId, selection);
+ }
+
+ /**
+ * The framework calls this to see if the file is correct.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected boolean validatePage() {
+ if (super.validatePage()) {
+ String extension = new Path(getFileName()).getFileExtension();
+ if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+ String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+ setErrorMessage(LayersEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IFile getModelFile() {
+ return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+ }
+ }
+
+ /**
+ * This is the page where the type of object to create is selected.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public class LayersModelWizardInitialObjectCreationPage extends WizardPage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Combo initialObjectField;
+
+ /**
+ * @generated
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ */
+ protected List<String> encodings;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Combo encodingField;
+
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersModelWizardInitialObjectCreationPage(String pageId) {
+ super(pageId);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE); {
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ layout.verticalSpacing = 12;
+ composite.setLayout(layout);
+
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.grabExcessVerticalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ composite.setLayoutData(data);
+ }
+
+ Label containerLabel = new Label(composite, SWT.LEFT);
+ {
+ containerLabel.setText(LayersEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ containerLabel.setLayoutData(data);
+ }
+
+ initialObjectField = new Combo(composite, SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ initialObjectField.setLayoutData(data);
+ }
+
+ for (String objectName : getInitialObjectNames()) {
+ initialObjectField.add(getLabel(objectName));
+ }
+
+ if (initialObjectField.getItemCount() == 1) {
+ initialObjectField.select(0);
+ }
+ initialObjectField.addModifyListener(validator);
+
+ Label encodingLabel = new Label(composite, SWT.LEFT);
+ {
+ encodingLabel.setText(LayersEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ encodingLabel.setLayoutData(data);
+ }
+ encodingField = new Combo(composite, SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ encodingField.setLayoutData(data);
+ }
+
+ for (String encoding : getEncodings()) {
+ encodingField.add(encoding);
+ }
+
+ encodingField.select(0);
+ encodingField.addModifyListener(validator);
+
+ setPageComplete(validatePage());
+ setControl(composite);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModifyListener validator =
+ new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ setPageComplete(validatePage());
+ }
+ };
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected boolean validatePage() {
+ return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ if (visible) {
+ if (initialObjectField.getItemCount() == 1) {
+ initialObjectField.clearSelection();
+ encodingField.setFocus();
+ }
+ else {
+ encodingField.clearSelection();
+ initialObjectField.setFocus();
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getInitialObjectName() {
+ String label = initialObjectField.getText();
+
+ for (String name : getInitialObjectNames()) {
+ if (getLabel(name).equals(label)) {
+ return name;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getEncoding() {
+ return encodingField.getText();
+ }
+
+ /**
+ * Returns the label for the specified type name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected String getLabel(String typeName) {
+ try {
+ return LayersEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+ }
+ catch(MissingResourceException mre) {
+ LayersEditorPlugin.INSTANCE.log(mre);
+ }
+ return typeName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<String> getEncodings() {
+ if (encodings == null) {
+ encodings = new ArrayList<String>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(LayersEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+ encodings.add(stringTokenizer.nextToken());
+ }
+ }
+ return encodings;
+ }
+ }
+
+ /**
+ * The framework calls this to create the contents of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void addPages() {
+ // Create a page, set the title, and the initial model file name.
+ //
+ newFileCreationPage = new LayersModelWizardNewFileCreationPage("Whatever", selection);
+ newFileCreationPage.setTitle(LayersEditorPlugin.INSTANCE.getString("_UI_LayersModelWizard_label"));
+ newFileCreationPage.setDescription(LayersEditorPlugin.INSTANCE.getString("_UI_LayersModelWizard_description"));
+ newFileCreationPage.setFileName(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+ addPage(newFileCreationPage);
+
+ // Try and get the resource selection to determine a current directory for the file dialog.
+ //
+ if (selection != null && !selection.isEmpty()) {
+ // Get the resource...
+ //
+ Object selectedElement = selection.iterator().next();
+ if (selectedElement instanceof IResource) {
+ // Get the resource parent, if its a file.
+ //
+ IResource selectedResource = (IResource)selectedElement;
+ if (selectedResource.getType() == IResource.FILE) {
+ selectedResource = selectedResource.getParent();
+ }
+
+ // This gives us a directory...
+ //
+ if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+ // Set this for the container.
+ //
+ newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+ // Make up a unique new name here.
+ //
+ String defaultModelBaseFilename = LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditorFilenameDefaultBase");
+ String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+ String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+ for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+ modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+ }
+ newFileCreationPage.setFileName(modelFilename);
+ }
+ }
+ }
+ initialObjectCreationPage = new LayersModelWizardInitialObjectCreationPage("Whatever2");
+ initialObjectCreationPage.setTitle(LayersEditorPlugin.INSTANCE.getString("_UI_LayersModelWizard_label"));
+ initialObjectCreationPage.setDescription(LayersEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+ addPage(initialObjectCreationPage);
+ }
+
+ /**
+ * Get the file from the page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IFile getModelFile() {
+ return newFileCreationPage.getModelFile();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/.classpath
new file mode 100644
index 00000000000..ed2bc1287f0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/.project b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/.project
new file mode 100644
index 00000000000..071748d2b61
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.stackmodel.tests</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.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..52d4b022174
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel.tests;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.papyrus.layers.stackmodel.layers.tests
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.papyrus.layers.stackmodel;visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.gmf.runtime.notation;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.junit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/build.properties
new file mode 100644
index 00000000000..dea13a7c6ed
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/build.properties
@@ -0,0 +1,16 @@
+#
+
+bin.includes = .,\
+ META-INF/,\
+ plugin.properties,\
+ bin/,\
+ build.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = .classpath,\
+ .project,\
+ META-INF/,\
+ build.properties,\
+ plugin.properties,\
+ src/
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/plugin.properties
new file mode 100644
index 00000000000..d150de6fe56
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Layers Tests
+providerName = www.example.org
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerOperatorTest.java
new file mode 100644
index 00000000000..e3e6154241d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerOperatorTest.java
@@ -0,0 +1,69 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Abstract Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet() <em>Is Descriptor Set</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor() <em>Reset Descriptor</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public abstract class AbstractLayerOperatorTest extends LayerOperatorTest {
+
+ /**
+ * Constructs a new Abstract Layer Operator test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractLayerOperatorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Abstract Layer Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected AbstractLayerOperator getFixture() {
+ return (AbstractLayerOperator)fixture;
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet() <em>Is Descriptor Set</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet()
+ * @generated
+ */
+ public void testIsDescriptorSet() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor() <em>Reset Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor()
+ * @generated
+ */
+ public void testResetDescriptor() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //AbstractLayerOperatorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerTest.java
new file mode 100644
index 00000000000..124e663e849
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerTest.java
@@ -0,0 +1,116 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Abstract Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties() <em>Attached Properties</em>}</li>
+ * </ul>
+ * </p>
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Remove Property Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String) <em>Get Property Instance</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public abstract class AbstractLayerTest extends LayerExpressionTest {
+
+ /**
+ * Constructs a new Abstract Layer test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractLayerTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Abstract Layer test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected AbstractLayer getFixture() {
+ return (AbstractLayer)fixture;
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties() <em>Attached Properties</em>}' feature getter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties()
+ * @generated
+ */
+ public void testGetAttachedProperties() {
+ // TODO: implement this feature getter test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testAddPropertyInstance__Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Remove Property Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testRemovePropertyInstance__Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testGetPropertyInstance__Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String) <em>Get Property Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String)
+ * @generated
+ */
+ public void testGetPropertyInstance__String() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //AbstractLayerTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AllViewsDerivedLayerTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AllViewsDerivedLayerTest.java
new file mode 100644
index 00000000000..16581fa51f6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AllViewsDerivedLayerTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>All Views Derived Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AllViewsDerivedLayerTest extends AbstractLayerTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(AllViewsDerivedLayerTest.class);
+ }
+
+ /**
+ * Constructs a new All Views Derived Layer test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AllViewsDerivedLayerTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this All Views Derived Layer test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected AllViewsDerivedLayer getFixture() {
+ return (AllViewsDerivedLayer)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createAllViewsDerivedLayer());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //AllViewsDerivedLayerTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AndStackedLayerOperatorDescriptorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AndStackedLayerOperatorDescriptorTest.java
new file mode 100644
index 00000000000..e10a64a4cd8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AndStackedLayerOperatorDescriptorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>And Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AndStackedLayerOperatorDescriptorTest extends StackedLayerOperatorDescriptorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(AndStackedLayerOperatorDescriptorTest.class);
+ }
+
+ /**
+ * Constructs a new And Stacked Layer Operator Descriptor test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AndStackedLayerOperatorDescriptorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this And Stacked Layer Operator Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected AndStackedLayerOperatorDescriptor getFixture() {
+ return (AndStackedLayerOperatorDescriptor)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createAndStackedLayerOperatorDescriptor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //AndStackedLayerOperatorDescriptorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ApplicationDependantElementTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ApplicationDependantElementTest.java
new file mode 100644
index 00000000000..60247fcdc15
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ApplicationDependantElementTest.java
@@ -0,0 +1,55 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Application Dependant Element</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class ApplicationDependantElementTest extends TestCase {
+
+ /**
+ * The fixture for this Application Dependant Element test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ApplicationDependantElement fixture = null;
+
+ /**
+ * Constructs a new Application Dependant Element test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ApplicationDependantElementTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Application Dependant Element test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(ApplicationDependantElement fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Application Dependant Element test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ApplicationDependantElement getFixture() {
+ return fixture;
+ }
+
+} //ApplicationDependantElementTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanInstanceTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanInstanceTest.java
new file mode 100644
index 00000000000..545a86e57ba
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanInstanceTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Boolean Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BooleanInstanceTest extends TypeInstanceTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(BooleanInstanceTest.class);
+ }
+
+ /**
+ * Constructs a new Boolean Instance test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanInstanceTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Boolean Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected BooleanInstance getFixture() {
+ return (BooleanInstance)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createBooleanInstance());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //BooleanInstanceTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanTypeTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanTypeTest.java
new file mode 100644
index 00000000000..58b5d5999b1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Boolean Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BooleanTypeTest extends TypeTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(BooleanTypeTest.class);
+ }
+
+ /**
+ * Constructs a new Boolean Type test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanTypeTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Boolean Type test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected BooleanType getFixture() {
+ return (BooleanType)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createBooleanType());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //BooleanTypeTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorInstanceTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorInstanceTest.java
new file mode 100644
index 00000000000..9234be9c65f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorInstanceTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Color Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ColorInstanceTest extends TypeInstanceTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(ColorInstanceTest.class);
+ }
+
+ /**
+ * Constructs a new Color Instance test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ColorInstanceTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Color Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected ColorInstance getFixture() {
+ return (ColorInstance)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createColorInstance());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //ColorInstanceTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorTest.java
new file mode 100644
index 00000000000..63c4d1eb34d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Color</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ColorTest extends TypeTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(ColorTest.class);
+ }
+
+ /**
+ * Constructs a new Color test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ColorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Color test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Color getFixture() {
+ return (Color)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createColor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //ColorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ComputePropertyValueCommandItfTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ComputePropertyValueCommandItfTest.java
new file mode 100644
index 00000000000..8e758b62f55
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ComputePropertyValueCommandItfTest.java
@@ -0,0 +1,74 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Compute Property Value Command Itf</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public abstract class ComputePropertyValueCommandItfTest extends TestCase {
+
+ /**
+ * The fixture for this Compute Property Value Command Itf test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComputePropertyValueCommand fixture = null;
+
+ /**
+ * Constructs a new Compute Property Value Command Itf test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComputePropertyValueCommandItfTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Compute Property Value Command Itf test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(ComputePropertyValueCommand fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Compute Property Value Command Itf test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComputePropertyValueCommand getFixture() {
+ return fixture;
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+ * @generated
+ */
+ public void testGetCmdValue() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //ComputePropertyValueCommandItfTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomLayerOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomLayerOperatorTest.java
new file mode 100644
index 00000000000..f0ae7f70e9c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomLayerOperatorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Custom Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CustomLayerOperatorTest extends LayerOperatorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(CustomLayerOperatorTest.class);
+ }
+
+ /**
+ * Constructs a new Custom Layer Operator test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomLayerOperatorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Custom Layer Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected CustomLayerOperator getFixture() {
+ return (CustomLayerOperator)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createCustomLayerOperator());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //CustomLayerOperatorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomPropertyOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomPropertyOperatorTest.java
new file mode 100644
index 00000000000..4945bd0fecc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomPropertyOperatorTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Custom Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance() <em>Reset Operator Instance</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class CustomPropertyOperatorTest extends PropertyOperatorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(CustomPropertyOperatorTest.class);
+ }
+
+ /**
+ * Constructs a new Custom Property Operator test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomPropertyOperatorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Custom Property Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected CustomPropertyOperator getFixture() {
+ return (CustomPropertyOperator)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createCustomPropertyOperator());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance() <em>Reset Operator Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance()
+ * @generated
+ */
+ public void testResetOperatorInstance() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //CustomPropertyOperatorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomTypeTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomTypeTest.java
new file mode 100644
index 00000000000..cb844dc0a78
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Custom Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CustomTypeTest extends TypeTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(CustomTypeTest.class);
+ }
+
+ /**
+ * Constructs a new Custom Type test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomTypeTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Custom Type test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected CustomType getFixture() {
+ return (CustomType)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createCustomType());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //CustomTypeTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/DefaultPropertyOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/DefaultPropertyOperatorTest.java
new file mode 100644
index 00000000000..8f6cb1e8dfd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/DefaultPropertyOperatorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Default Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DefaultPropertyOperatorTest extends PropertyOperatorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(DefaultPropertyOperatorTest.class);
+ }
+
+ /**
+ * Constructs a new Default Property Operator test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultPropertyOperatorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Default Property Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected DefaultPropertyOperator getFixture() {
+ return (DefaultPropertyOperator)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createDefaultPropertyOperator());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //DefaultPropertyOperatorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillInstanceTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillInstanceTest.java
new file mode 100644
index 00000000000..be73f9daaa9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillInstanceTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Fill Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FillInstanceTest extends TypeInstanceTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(FillInstanceTest.class);
+ }
+
+ /**
+ * Constructs a new Fill Instance test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FillInstanceTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Fill Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected FillInstance getFixture() {
+ return (FillInstance)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createFillInstance());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //FillInstanceTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillPropertySetterTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillPropertySetterTest.java
new file mode 100644
index 00000000000..36f201019bf
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillPropertySetterTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Fill Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FillPropertySetterTest extends PropertySetterTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(FillPropertySetterTest.class);
+ }
+
+ /**
+ * Constructs a new Fill Property Setter test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FillPropertySetterTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Fill Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected FillPropertySetter getFixture() {
+ return (FillPropertySetter)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createFillPropertySetter());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //FillPropertySetterTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillTest.java
new file mode 100644
index 00000000000..a13e954b648
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Fill</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FillTest extends TypeTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(FillTest.class);
+ }
+
+ /**
+ * Constructs a new Fill test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FillTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Fill test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Fill getFixture() {
+ return (Fill)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createFill());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //FillTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderElementTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderElementTest.java
new file mode 100644
index 00000000000..a03553f33a2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderElementTest.java
@@ -0,0 +1,55 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class FolderElementTest extends TestCase {
+
+ /**
+ * The fixture for this Folder Element test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FolderElement fixture = null;
+
+ /**
+ * Constructs a new Folder Element test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FolderElementTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Folder Element test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(FolderElement fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Folder Element test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FolderElement getFixture() {
+ return fixture;
+ }
+
+} //FolderElementTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderTest.java
new file mode 100644
index 00000000000..ff6884af899
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FolderTest extends FolderElementTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(FolderTest.class);
+ }
+
+ /**
+ * Constructs a new Folder test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FolderTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Folder test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Folder getFixture() {
+ return (Folder)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createFolder());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //FolderTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontInstanceTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontInstanceTest.java
new file mode 100644
index 00000000000..a6db6824df5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontInstanceTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Font Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FontInstanceTest extends TypeInstanceTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(FontInstanceTest.class);
+ }
+
+ /**
+ * Constructs a new Font Instance test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FontInstanceTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Font Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected FontInstance getFixture() {
+ return (FontInstance)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createFontInstance());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //FontInstanceTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontPropertySetterTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontPropertySetterTest.java
new file mode 100644
index 00000000000..d8d5906fc8c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontPropertySetterTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Font Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FontPropertySetterTest extends PropertySetterTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(FontPropertySetterTest.class);
+ }
+
+ /**
+ * Constructs a new Font Property Setter test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FontPropertySetterTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Font Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected FontPropertySetter getFixture() {
+ return (FontPropertySetter)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createFontPropertySetter());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //FontPropertySetterTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontTypeTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontTypeTest.java
new file mode 100644
index 00000000000..77980f9887d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Font Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FontTypeTest extends TypeTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(FontTypeTest.class);
+ }
+
+ /**
+ * Constructs a new Font Type test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FontTypeTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Font Type test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected FontType getFixture() {
+ return (FontType)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createFontType());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //FontTypeTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntInstanceTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntInstanceTest.java
new file mode 100644
index 00000000000..78ae46964cb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntInstanceTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Int Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntInstanceTest extends TypeInstanceTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(IntInstanceTest.class);
+ }
+
+ /**
+ * Constructs a new Int Instance test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntInstanceTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Int Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected IntInstance getFixture() {
+ return (IntInstance)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createIntInstance());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //IntInstanceTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntTypeTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntTypeTest.java
new file mode 100644
index 00000000000..12eb2a44657
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Int Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntTypeTest extends TypeTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(IntTypeTest.class);
+ }
+
+ /**
+ * Constructs a new Int Type test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntTypeTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Int Type test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected IntType getFixture() {
+ return (IntType)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createIntType());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //IntTypeTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsAbstractUmlSetterTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsAbstractUmlSetterTest.java
new file mode 100644
index 00000000000..dc889c8ea1a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsAbstractUmlSetterTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Abstract Uml Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsAbstractUmlSetterTest extends PropertySetterTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(IsAbstractUmlSetterTest.class);
+ }
+
+ /**
+ * Constructs a new Is Abstract Uml Setter test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IsAbstractUmlSetterTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Is Abstract Uml Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected IsAbstractUmlSetter getFixture() {
+ return (IsAbstractUmlSetter)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createIsAbstractUmlSetter());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //IsAbstractUmlSetterTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsValidPropertySetterTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsValidPropertySetterTest.java
new file mode 100644
index 00000000000..8de2033e7c7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsValidPropertySetterTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Valid Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsValidPropertySetterTest extends PropertySetterTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(IsValidPropertySetterTest.class);
+ }
+
+ /**
+ * Constructs a new Is Valid Property Setter test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IsValidPropertySetterTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Is Valid Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected IsValidPropertySetter getFixture() {
+ return (IsValidPropertySetter)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createIsValidPropertySetter());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //IsValidPropertySetterTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsVisiblePropertySetterTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsVisiblePropertySetterTest.java
new file mode 100644
index 00000000000..87d3af0d310
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsVisiblePropertySetterTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Visible Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsVisiblePropertySetterTest extends PropertySetterTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(IsVisiblePropertySetterTest.class);
+ }
+
+ /**
+ * Constructs a new Is Visible Property Setter test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IsVisiblePropertySetterTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Is Visible Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected IsVisiblePropertySetter getFixture() {
+ return (IsVisiblePropertySetter)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createIsVisiblePropertySetter());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //IsVisiblePropertySetterTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerApplicationFactoryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerApplicationFactoryTest.java
new file mode 100644
index 00000000000..56cd6f36961
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerApplicationFactoryTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Application Factory</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerApplicationFactoryTest extends TestCase {
+
+ /**
+ * The fixture for this Layer Application Factory test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerApplicationFactory fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayerApplicationFactoryTest.class);
+ }
+
+ /**
+ * Constructs a new Layer Application Factory test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerApplicationFactoryTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Layer Application Factory test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(LayerApplicationFactory fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Layer Application Factory test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerApplicationFactory getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayerApplicationFactory());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //LayerApplicationFactoryTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorRegistryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorRegistryTest.java
new file mode 100644
index 00000000000..faba91b7dcb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorRegistryTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerDescriptorRegistryTest extends TestCase {
+
+ /**
+ * The fixture for this Layer Descriptor Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerDescriptorRegistry fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayerDescriptorRegistryTest.class);
+ }
+
+ /**
+ * Constructs a new Layer Descriptor Registry test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerDescriptorRegistryTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Layer Descriptor Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(LayerDescriptorRegistry fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Layer Descriptor Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerDescriptorRegistry getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayerDescriptorRegistry());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //LayerDescriptorRegistryTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorTest.java
new file mode 100644
index 00000000000..8b9e2fa4ff9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerDescriptorTest extends TestCase {
+
+ /**
+ * The fixture for this Layer Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerDescriptor fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayerDescriptorTest.class);
+ }
+
+ /**
+ * Constructs a new Layer Descriptor test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerDescriptorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Layer Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(LayerDescriptor fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Layer Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerDescriptor getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayerDescriptor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //LayerDescriptorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerExpressionTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerExpressionTest.java
new file mode 100644
index 00000000000..e54b89eb3b0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerExpressionTest.java
@@ -0,0 +1,186 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal() <em>Is Layer Enabled Internal</em>}</li>
+ * </ul>
+ * </p>
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Views Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack) <em>Attach To Layers Stack</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack() <em>Get Layers Stack</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState() <em>Enter Attached State</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach() <em>Attach</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach() <em>Detach</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState() <em>Exit Attached State</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public abstract class LayerExpressionTest extends ApplicationDependantElementTest {
+
+ /**
+ * Constructs a new Layer Expression test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerExpressionTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Layer Expression test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected LayerExpression getFixture() {
+ return (LayerExpression)fixture;
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal() <em>Is Layer Enabled Internal</em>}' feature getter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal()
+ * @generated
+ */
+ public void testIsLayerEnabledInternal() {
+ // TODO: implement this feature getter test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testGetComputePropertyValueCommand__View_Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Views Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testGetViewsComputePropertyValueCommand__EList_Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ public void testGetPropertiesComputePropertyValueCommand__View_EList() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack) <em>Attach To Layers Stack</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+ * @generated
+ */
+ public void testAttachToLayersStack__LayersStack() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack() <em>Get Layers Stack</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack()
+ * @generated
+ */
+ public void testGetLayersStack() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState() <em>Enter Attached State</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState()
+ * @generated
+ */
+ public void testEnterAttachedState() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach() <em>Attach</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach()
+ * @generated
+ */
+ public void testAttach() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach() <em>Detach</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach()
+ * @generated
+ */
+ public void testDetach() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState() <em>Exit Attached State</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState()
+ * @generated
+ */
+ public void testExitAttachedState() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //LayerExpressionTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerNamedStyleTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerNamedStyleTest.java
new file mode 100644
index 00000000000..9018ef40d4b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerNamedStyleTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Named Style</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerNamedStyleTest extends TestCase {
+
+ /**
+ * The fixture for this Layer Named Style test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerNamedStyle fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayerNamedStyleTest.class);
+ }
+
+ /**
+ * Constructs a new Layer Named Style test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerNamedStyleTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Layer Named Style test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(LayerNamedStyle fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Layer Named Style test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerNamedStyle getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayerNamedStyle());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //LayerNamedStyleTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorRegistryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorRegistryTest.java
new file mode 100644
index 00000000000..2ef8d459f5f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorRegistryTest.java
@@ -0,0 +1,178 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Operator Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor) <em>Add Layer Operator Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String) <em>Get Layer Operator Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Add Property Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String) <em>Get Property Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String) <em>Attach Operator To Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String) <em>Create Layer Operator</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class LayerOperatorDescriptorRegistryTest extends TestCase {
+
+ /**
+ * The fixture for this Layer Operator Descriptor Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorDescriptorRegistry fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayerOperatorDescriptorRegistryTest.class);
+ }
+
+ /**
+ * Constructs a new Layer Operator Descriptor Registry test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptorRegistryTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Layer Operator Descriptor Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(LayerOperatorDescriptorRegistry fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Layer Operator Descriptor Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorDescriptorRegistry getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor) <em>Add Layer Operator Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor)
+ * @generated
+ */
+ public void testAddLayerOperatorDescriptor__LayerOperatorDescriptor() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String) <em>Get Layer Operator Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String)
+ * @generated
+ */
+ public void testGetLayerOperatorDescriptor__String() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Add Property Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+ * @generated
+ */
+ public void testAddPropertyOperator__PropertyOperator() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String) <em>Get Property Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String)
+ * @generated
+ */
+ public void testGetPropertyOperator__String() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String) <em>Attach Operator To Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String)
+ * @generated
+ */
+ public void testAttachOperatorToDescriptor__Property_String_String() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String) <em>Create Layer Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String)
+ * @generated
+ */
+ public void testCreateLayerOperator__String() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //LayerOperatorDescriptorRegistryTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorTest.java
new file mode 100644
index 00000000000..f94a38c96c2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorTest.java
@@ -0,0 +1,150 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Set Property Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator() <em>Create Layer Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator) <em>Set Property Collection Size</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class LayerOperatorDescriptorTest extends TestCase {
+
+ /**
+ * The fixture for this Layer Operator Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorDescriptor fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayerOperatorDescriptorTest.class);
+ }
+
+ /**
+ * Constructs a new Layer Operator Descriptor test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Layer Operator Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(LayerOperatorDescriptor fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Layer Operator Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorDescriptor getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayerOperatorDescriptor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testGetPropertyOperator__Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Set Property Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+ * @generated
+ */
+ public void testSetPropertyOperator__Property_PropertyOperator() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator() <em>Create Layer Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator()
+ * @generated
+ */
+ public void testCreateLayerOperator() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator) <em>Set Property Collection Size</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator)
+ * @generated
+ */
+ public void testSetPropertyCollectionSize__int_DefaultPropertyOperator() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //LayerOperatorDescriptorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorTest.java
new file mode 100644
index 00000000000..2f9f0c5d367
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorTest.java
@@ -0,0 +1,55 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public abstract class LayerOperatorTest extends LayerExpressionTest {
+
+ /**
+ * Constructs a new Layer Operator test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Layer Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected LayerOperator getFixture() {
+ return (LayerOperator)fixture;
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression)
+ * @generated
+ */
+ public void testAddLayer__LayerExpression() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //LayerOperatorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerStackDescriptorRegistryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerStackDescriptorRegistryTest.java
new file mode 100644
index 00000000000..917c4cd7a4f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerStackDescriptorRegistryTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Stack Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerStackDescriptorRegistryTest extends TestCase {
+
+ /**
+ * The fixture for this Layer Stack Descriptor Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerStackDescriptorRegistry fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayerStackDescriptorRegistryTest.class);
+ }
+
+ /**
+ * Constructs a new Layer Stack Descriptor Registry test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerStackDescriptorRegistryTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Layer Stack Descriptor Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(LayerStackDescriptorRegistry fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Layer Stack Descriptor Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerStackDescriptorRegistry getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayerStackDescriptorRegistry());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //LayerStackDescriptorRegistryTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerTest.java
new file mode 100644
index 00000000000..89c9673ba1d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayerTest extends AbstractLayerTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayerTest.class);
+ }
+
+ /**
+ * Constructs a new Layer test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Layer test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Layer getFixture() {
+ return (Layer)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayer());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //LayerTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersAllTests.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersAllTests.java
new file mode 100644
index 00000000000..f30397a474b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersAllTests.java
@@ -0,0 +1,47 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test suite for the '<em><b>Layers</b></em>' model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersAllTests extends TestSuite {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(suite());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static Test suite() {
+ TestSuite suite = new LayersAllTests("Layers Tests");
+ suite.addTest(LayersTests.suite());
+ return suite;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersAllTests(String name) {
+ super(name);
+ }
+
+} //LayersAllTests
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersContainerTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersContainerTest.java
new file mode 100644
index 00000000000..f72c728376f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersContainerTest.java
@@ -0,0 +1,74 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Container</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public abstract class LayersContainerTest extends TestCase {
+
+ /**
+ * The fixture for this Container test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersContainer fixture = null;
+
+ /**
+ * Constructs a new Container test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersContainerTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Container test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(LayersContainer fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Container test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersContainer getFixture() {
+ return fixture;
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression)
+ * @generated
+ */
+ public void testAddLayer__LayerExpression() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //LayersContainerTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersExample.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersExample.java
new file mode 100644
index 00000000000..307e85c6b8f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersExample.java
@@ -0,0 +1,121 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.util.Diagnostician;
+
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A sample utility for the '<em><b>layers</b></em>' package.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersExample {
+ /**
+ * <!-- begin-user-doc -->
+ * Load all the argument file paths or URIs as instances of the model.
+ * <!-- end-user-doc -->
+ * @param args the file paths or URIs.
+ * @generated
+ */
+ public static void main(String[] args) {
+ // Create a resource set to hold the resources.
+ //
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ // Register the appropriate resource factory to handle all file extensions.
+ //
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put
+ (Resource.Factory.Registry.DEFAULT_EXTENSION,
+ new XMIResourceFactoryImpl());
+
+ // Register the package to ensure it is available during loading.
+ //
+ resourceSet.getPackageRegistry().put
+ (LayersPackage.eNS_URI,
+ LayersPackage.eINSTANCE);
+
+ // If there are no arguments, emit an appropriate usage message.
+ //
+ if (args.length == 0) {
+ System.out.println("Enter a list of file paths or URIs that have content like this:");
+ try {
+ Resource resource = resourceSet.createResource(URI.createURI("http:///My.layers"));
+ LayerNamedStyle root = LayersFactory.eINSTANCE.createLayerNamedStyle();
+ resource.getContents().add(root);
+ resource.save(System.out, null);
+ }
+ catch (IOException exception) {
+ exception.printStackTrace();
+ }
+ }
+ else {
+ // Iterate over all the arguments.
+ //
+ for (int i = 0; i < args.length; ++i) {
+ // Construct the URI for the instance file.
+ // The argument is treated as a file path only if it denotes an existing file.
+ // Otherwise, it's directly treated as a URL.
+ //
+ File file = new File(args[i]);
+ URI uri = file.isFile() ? URI.createFileURI(file.getAbsolutePath()): URI.createURI(args[i]);
+
+ try {
+ // Demand load resource for this file.
+ //
+ Resource resource = resourceSet.getResource(uri, true);
+ System.out.println("Loaded " + uri);
+
+ // Validate the contents of the loaded resource.
+ //
+ for (EObject eObject : resource.getContents()) {
+ Diagnostic diagnostic = Diagnostician.INSTANCE.validate(eObject);
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ printDiagnostic(diagnostic, "");
+ }
+ }
+ }
+ catch (RuntimeException exception) {
+ System.out.println("Problem loading " + uri);
+ exception.printStackTrace();
+ }
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Prints diagnostics with indentation.
+ * <!-- end-user-doc -->
+ * @param diagnostic the diagnostic to print.
+ * @param indent the indentation for printing.
+ * @generated
+ */
+ protected static void printDiagnostic(Diagnostic diagnostic, String indent) {
+ System.out.print(indent);
+ System.out.println(diagnostic.getMessage());
+ for (Diagnostic child : diagnostic.getChildren()) {
+ printDiagnostic(child, indent + " ");
+ }
+ }
+
+} //LayersExample
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackApplicationTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackApplicationTest.java
new file mode 100644
index 00000000000..7eaf072569e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackApplicationTest.java
@@ -0,0 +1,145 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Stack Application</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Get Layers Stack For</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Remove Layers Stack For</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Is Layers Stack Attached For</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Create Layers Stack For</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Lookup Layers Stack For</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class LayersStackApplicationTest extends FolderElementTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayersStackApplicationTest.class);
+ }
+
+ /**
+ * Constructs a new Stack Application test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStackApplicationTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Stack Application test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected LayersStackApplication getFixture() {
+ return (LayersStackApplication)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayersStackApplication());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Get Layers Stack For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ public void testGetLayersStackFor__Diagram() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Remove Layers Stack For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ public void testRemoveLayersStackFor__Diagram() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Is Layers Stack Attached For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ public void testIsLayersStackAttachedFor__Diagram() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Create Layers Stack For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ public void testCreateLayersStackFor__Diagram() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Lookup Layers Stack For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ public void testLookupLayersStackFor__Diagram() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //LayersStackApplicationTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackTest.java
new file mode 100644
index 00000000000..f7f9973496a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackTest.java
@@ -0,0 +1,234 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Stack</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Views Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation() <em>Start After Creation</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers() <em>Attach Layers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach() <em>Attach</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach() <em>Detach</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState() <em>Enter Attached State</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState() <em>Exit Attached State</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class LayersStackTest extends TestCase {
+
+ /**
+ * The fixture for this Stack test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersStack fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LayersStackTest.class);
+ }
+
+ /**
+ * Constructs a new Stack test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStackTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Stack test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(LayersStack fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Stack test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersStack getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLayersStack());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression)
+ * @generated
+ */
+ public void testAddLayer__LayerExpression() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testGetComputePropertyValueCommand__View_Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ public void testGetPropertiesComputePropertyValueCommand__View_EList() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Views Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testGetViewsComputePropertyValueCommand__EList_Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation() <em>Start After Creation</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation()
+ * @generated
+ */
+ public void testStartAfterCreation() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers() <em>Attach Layers</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers()
+ * @generated
+ */
+ public void testAttachLayers() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach() <em>Attach</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach()
+ * @generated
+ */
+ public void testAttach() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach() <em>Detach</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach()
+ * @generated
+ */
+ public void testDetach() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState() <em>Enter Attached State</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState()
+ * @generated
+ */
+ public void testEnterAttachedState() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState() <em>Exit Attached State</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState()
+ * @generated
+ */
+ public void testExitAttachedState() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //LayersStackTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersTests.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersTests.java
new file mode 100644
index 00000000000..3105bb78e7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersTests.java
@@ -0,0 +1,90 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test suite for the '<em><b>layers</b></em>' package.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersTests extends TestSuite {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(suite());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static Test suite() {
+ TestSuite suite = new LayersTests("layers Tests");
+ suite.addTestSuite(LayersStackTest.class);
+ suite.addTestSuite(LayersStackApplicationTest.class);
+ suite.addTestSuite(PropertyRegistryTest.class);
+ suite.addTestSuite(PropertyTest.class);
+ suite.addTestSuite(MetamodelTest.class);
+ suite.addTestSuite(PropertySetterRegistryTest.class);
+ suite.addTestSuite(LayerOperatorDescriptorRegistryTest.class);
+ suite.addTestSuite(LayerOperatorDescriptorTest.class);
+ suite.addTestSuite(PropertyOperatorTest.class);
+ suite.addTestSuite(DefaultPropertyOperatorTest.class);
+ suite.addTestSuite(IntInstanceTest.class);
+ suite.addTestSuite(BooleanInstanceTest.class);
+ suite.addTestSuite(StringInstanceTest.class);
+ suite.addTestSuite(IntTypeTest.class);
+ suite.addTestSuite(BooleanTypeTest.class);
+ suite.addTestSuite(StringTypeTest.class);
+ suite.addTestSuite(CustomTypeTest.class);
+ suite.addTestSuite(TopLayerOperatorTest.class);
+ suite.addTestSuite(StackedLayerOperatorTest.class);
+ suite.addTestSuite(CustomLayerOperatorTest.class);
+ suite.addTestSuite(NullInstanceTest.class);
+ suite.addTestSuite(RegExpLayerTest.class);
+ suite.addTestSuite(LayerTest.class);
+ suite.addTestSuite(ColorTest.class);
+ suite.addTestSuite(ColorInstanceTest.class);
+ suite.addTestSuite(FillInstanceTest.class);
+ suite.addTestSuite(FillTest.class);
+ suite.addTestSuite(FillPropertySetterTest.class);
+ suite.addTestSuite(IsValidPropertySetterTest.class);
+ suite.addTestSuite(NullPropertySetterTest.class);
+ suite.addTestSuite(LineTypeTest.class);
+ suite.addTestSuite(LineInstanceTest.class);
+ suite.addTestSuite(LinePropertySetterTest.class);
+ suite.addTestSuite(FontPropertySetterTest.class);
+ suite.addTestSuite(FontInstanceTest.class);
+ suite.addTestSuite(FontTypeTest.class);
+ suite.addTestSuite(IsVisiblePropertySetterTest.class);
+ suite.addTestSuite(TopLayerOperatorDescriptorTest.class);
+ suite.addTestSuite(StackedLayerOperatorDescriptorTest.class);
+ suite.addTestSuite(CustomPropertyOperatorTest.class);
+ suite.addTestSuite(AndStackedLayerOperatorDescriptorTest.class);
+ suite.addTestSuite(OrStackedLayerOperatorDescriptorTest.class);
+ suite.addTestSuite(IsAbstractUmlSetterTest.class);
+ suite.addTestSuite(AllViewsDerivedLayerTest.class);
+ return suite;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersTests(String name) {
+ super(name);
+ }
+
+} //LayersTests
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineInstanceTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineInstanceTest.java
new file mode 100644
index 00000000000..1c673847213
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineInstanceTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Line Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LineInstanceTest extends TypeInstanceTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LineInstanceTest.class);
+ }
+
+ /**
+ * Constructs a new Line Instance test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LineInstanceTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Line Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected LineInstance getFixture() {
+ return (LineInstance)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLineInstance());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //LineInstanceTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LinePropertySetterTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LinePropertySetterTest.java
new file mode 100644
index 00000000000..af2775fc08d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LinePropertySetterTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Line Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LinePropertySetterTest extends PropertySetterTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LinePropertySetterTest.class);
+ }
+
+ /**
+ * Constructs a new Line Property Setter test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LinePropertySetterTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Line Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected LinePropertySetter getFixture() {
+ return (LinePropertySetter)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLinePropertySetter());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //LinePropertySetterTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineTypeTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineTypeTest.java
new file mode 100644
index 00000000000..46c9b02c310
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Line Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LineTypeTest extends TypeTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(LineTypeTest.class);
+ }
+
+ /**
+ * Constructs a new Line Type test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LineTypeTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Line Type test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected LineType getFixture() {
+ return (LineType)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createLineType());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //LineTypeTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/MetamodelTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/MetamodelTest.java
new file mode 100644
index 00000000000..a7e00468d60
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/MetamodelTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Metamodel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage() <em>Get EPackage</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class MetamodelTest extends FolderElementTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(MetamodelTest.class);
+ }
+
+ /**
+ * Constructs a new Metamodel test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MetamodelTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Metamodel test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Metamodel getFixture() {
+ return (Metamodel)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createMetamodel());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage() <em>Get EPackage</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage()
+ * @generated
+ */
+ public void testGetEPackage() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //MetamodelTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullInstanceTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullInstanceTest.java
new file mode 100644
index 00000000000..1b8f809f1ff
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullInstanceTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Null Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance() <em>Get Instance</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class NullInstanceTest extends TypeInstanceTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(NullInstanceTest.class);
+ }
+
+ /**
+ * Constructs a new Null Instance test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullInstanceTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Null Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected NullInstance getFixture() {
+ return (NullInstance)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createNullInstance());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance() <em>Get Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance()
+ * @generated
+ */
+ public void testGetInstance() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //NullInstanceTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullPropertySetterTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullPropertySetterTest.java
new file mode 100644
index 00000000000..8398be4649c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullPropertySetterTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Null Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NullPropertySetterTest extends PropertySetterTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(NullPropertySetterTest.class);
+ }
+
+ /**
+ * Constructs a new Null Property Setter test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullPropertySetterTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Null Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected NullPropertySetter getFixture() {
+ return (NullPropertySetter)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createNullPropertySetter());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //NullPropertySetterTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/OrStackedLayerOperatorDescriptorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/OrStackedLayerOperatorDescriptorTest.java
new file mode 100644
index 00000000000..bb9f2f8c817
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/OrStackedLayerOperatorDescriptorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Or Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OrStackedLayerOperatorDescriptorTest extends StackedLayerOperatorDescriptorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(OrStackedLayerOperatorDescriptorTest.class);
+ }
+
+ /**
+ * Constructs a new Or Stacked Layer Operator Descriptor test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrStackedLayerOperatorDescriptorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Or Stacked Layer Operator Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected OrStackedLayerOperatorDescriptor getFixture() {
+ return (OrStackedLayerOperatorDescriptor)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createOrStackedLayerOperatorDescriptor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //OrStackedLayerOperatorDescriptorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyIndexTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyIndexTest.java
new file mode 100644
index 00000000000..9a9ad376a81
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyIndexTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Index</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertyIndexTest extends TestCase {
+
+ /**
+ * The fixture for this Property Index test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyIndex fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(PropertyIndexTest.class);
+ }
+
+ /**
+ * Constructs a new Property Index test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyIndexTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Property Index test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(PropertyIndex fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Property Index test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyIndex getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createPropertyIndex());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //PropertyIndexTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyOperatorTest.java
new file mode 100644
index 00000000000..c690cbf473a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyOperatorTest.java
@@ -0,0 +1,108 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList) <em>Get Compute Property Value Command</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class PropertyOperatorTest extends TestCase {
+
+ /**
+ * The fixture for this Property Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyOperator fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(PropertyOperatorTest.class);
+ }
+
+ /**
+ * Constructs a new Property Operator test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyOperatorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Property Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(PropertyOperator fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Property Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyOperator getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createPropertyOperator());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList) <em>Get Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ public void testGetComputePropertyValueCommand__EList() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //PropertyOperatorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyRegistryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyRegistryTest.java
new file mode 100644
index 00000000000..1cf0815d81d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyRegistryTest.java
@@ -0,0 +1,155 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount() <em>Properties Count</em>}</li>
+ * </ul>
+ * </p>
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String) <em>Get Property Index</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String) <em>Get Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class PropertyRegistryTest extends TestCase {
+
+ /**
+ * The fixture for this Property Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyRegistry fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(PropertyRegistryTest.class);
+ }
+
+ /**
+ * Constructs a new Property Registry test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyRegistryTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Property Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(PropertyRegistry fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Property Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyRegistry getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createPropertyRegistry());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount() <em>Properties Count</em>}' feature getter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount()
+ * @generated
+ */
+ public void testGetPropertiesCount() {
+ // TODO: implement this feature getter test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String) <em>Get Property Index</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String)
+ * @generated
+ */
+ public void testGetPropertyIndex__String() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String) <em>Get Property</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String)
+ * @generated
+ */
+ public void testGetProperty__String() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testAddProperty__Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //PropertyRegistryTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterRegistryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterRegistryTest.java
new file mode 100644
index 00000000000..4620a0902a6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterRegistryTest.java
@@ -0,0 +1,136 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Setter Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Setter</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String) <em>Get Property Setter</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter) <em>Add Property Setter</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class PropertySetterRegistryTest extends TestCase {
+
+ /**
+ * The fixture for this Property Setter Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertySetterRegistry fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(PropertySetterRegistryTest.class);
+ }
+
+ /**
+ * Constructs a new Property Setter Registry test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertySetterRegistryTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Property Setter Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(PropertySetterRegistry fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Property Setter Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertySetterRegistry getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createPropertySetterRegistry());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Setter</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ public void testGetPropertySetter__Property() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String) <em>Get Property Setter</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String)
+ * @generated
+ */
+ public void testGetPropertySetter__String() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter) <em>Add Property Setter</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter)
+ * @generated
+ */
+ public void testAddPropertySetter__PropertySetter() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //PropertySetterRegistryTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterTest.java
new file mode 100644
index 00000000000..db37f544ebd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterTest.java
@@ -0,0 +1,74 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public abstract class PropertySetterTest extends TestCase {
+
+ /**
+ * The fixture for this Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertySetter fixture = null;
+
+ /**
+ * Constructs a new Property Setter test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertySetterTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(PropertySetter fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertySetter getFixture() {
+ return fixture;
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ * @generated
+ */
+ public void testSetValue__View_TypeInstance() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //PropertySetterTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyTest.java
new file mode 100644
index 00000000000..1acd7877748
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance() <em>Create Instance</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class PropertyTest extends FolderElementTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(PropertyTest.class);
+ }
+
+ /**
+ * Constructs a new Property test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Property test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Property getFixture() {
+ return (Property)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createProperty());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance() <em>Create Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance()
+ * @generated
+ */
+ public void testCreateInstance() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //PropertyTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerDescriptorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerDescriptorTest.java
new file mode 100644
index 00000000000..dd8f3a7573b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerDescriptorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Reg Exp Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RegExpLayerDescriptorTest extends LayerDescriptorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(RegExpLayerDescriptorTest.class);
+ }
+
+ /**
+ * Constructs a new Reg Exp Layer Descriptor test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RegExpLayerDescriptorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Reg Exp Layer Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected RegExpLayerDescriptor getFixture() {
+ return (RegExpLayerDescriptor)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createRegExpLayerDescriptor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //RegExpLayerDescriptorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerTest.java
new file mode 100644
index 00000000000..1dd7b1206dc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerTest.java
@@ -0,0 +1,173 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Reg Exp Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Activate</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Deactivate</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Is Derived View</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Attach Derived View</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList) <em>Attach Derived Views</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews() <em>Attach Derived Views</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList) <em>Lookup Derived Views</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public class RegExpLayerTest extends AbstractLayerTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(RegExpLayerTest.class);
+ }
+
+ /**
+ * Constructs a new Reg Exp Layer test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RegExpLayerTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Reg Exp Layer test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected RegExpLayer getFixture() {
+ return (RegExpLayer)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createRegExpLayer());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Activate</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator)
+ * @generated
+ */
+ public void testActivate__AbstractLayerOperator() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Deactivate</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator)
+ * @generated
+ */
+ public void testDeactivate__AbstractLayerOperator() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Is Derived View</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View)
+ * @generated
+ */
+ public void testIsDerivedView__View() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Attach Derived View</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View)
+ * @generated
+ */
+ public void testAttachDerivedView__View() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList) <em>Attach Derived Views</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ public void testAttachDerivedViews__EList() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews() <em>Attach Derived Views</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews()
+ * @generated
+ */
+ public void testAttachDerivedViews() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList) <em>Lookup Derived Views</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ public void testLookupDerivedViews__EList() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //RegExpLayerTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/SimpleLayerDescriptorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/SimpleLayerDescriptorTest.java
new file mode 100644
index 00000000000..66e7e1cafdd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/SimpleLayerDescriptorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Simple Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SimpleLayerDescriptorTest extends LayerDescriptorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(SimpleLayerDescriptorTest.class);
+ }
+
+ /**
+ * Constructs a new Simple Layer Descriptor test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleLayerDescriptorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Simple Layer Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected SimpleLayerDescriptor getFixture() {
+ return (SimpleLayerDescriptor)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createSimpleLayerDescriptor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //SimpleLayerDescriptorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorDescriptorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorDescriptorTest.java
new file mode 100644
index 00000000000..952d71c0799
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorDescriptorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StackedLayerOperatorDescriptorTest extends LayerOperatorDescriptorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(StackedLayerOperatorDescriptorTest.class);
+ }
+
+ /**
+ * Constructs a new Stacked Layer Operator Descriptor test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StackedLayerOperatorDescriptorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Stacked Layer Operator Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected StackedLayerOperatorDescriptor getFixture() {
+ return (StackedLayerOperatorDescriptor)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //StackedLayerOperatorDescriptorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorTest.java
new file mode 100644
index 00000000000..d12d7545306
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Stacked Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StackedLayerOperatorTest extends AbstractLayerOperatorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(StackedLayerOperatorTest.class);
+ }
+
+ /**
+ * Constructs a new Stacked Layer Operator test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StackedLayerOperatorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Stacked Layer Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected StackedLayerOperator getFixture() {
+ return (StackedLayerOperator)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createStackedLayerOperator());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //StackedLayerOperatorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringInstanceTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringInstanceTest.java
new file mode 100644
index 00000000000..18c1684b870
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringInstanceTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringInstanceTest extends TypeInstanceTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(StringInstanceTest.class);
+ }
+
+ /**
+ * Constructs a new String Instance test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringInstanceTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this String Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected StringInstance getFixture() {
+ return (StringInstance)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createStringInstance());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //StringInstanceTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertyIndexMapTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertyIndexMapTest.java
new file mode 100644
index 00000000000..1c6046b092a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertyIndexMapTest.java
@@ -0,0 +1,93 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String To Property Index Map</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToPropertyIndexMapTest extends TestCase {
+
+ /**
+ * The fixture for this String To Property Index Map test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map.Entry<String, PropertyIndex> fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(StringToPropertyIndexMapTest.class);
+ }
+
+ /**
+ * Constructs a new String To Property Index Map test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToPropertyIndexMapTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this String To Property Index Map test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(Map.Entry<String, PropertyIndex> fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this String To Property Index Map test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map.Entry<String, PropertyIndex> getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void setUp() throws Exception {
+ setFixture((Map.Entry<String, PropertyIndex>)LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //StringToPropertyIndexMapTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertySetterTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertySetterTest.java
new file mode 100644
index 00000000000..5c78693fbbe
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertySetterTest.java
@@ -0,0 +1,93 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String To Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToPropertySetterTest extends TestCase {
+
+ /**
+ * The fixture for this String To Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map.Entry<String, PropertySetter> fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(StringToPropertySetterTest.class);
+ }
+
+ /**
+ * Constructs a new String To Property Setter test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToPropertySetterTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this String To Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(Map.Entry<String, PropertySetter> fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this String To Property Setter test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map.Entry<String, PropertySetter> getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void setUp() throws Exception {
+ setFixture((Map.Entry<String, PropertySetter>)LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //StringToPropertySetterTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeInstanceMapTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeInstanceMapTest.java
new file mode 100644
index 00000000000..082c85dcd8c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeInstanceMapTest.java
@@ -0,0 +1,93 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String To Type Instance Map</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToTypeInstanceMapTest extends TestCase {
+
+ /**
+ * The fixture for this String To Type Instance Map test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map.Entry<String, TypeInstance> fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(StringToTypeInstanceMapTest.class);
+ }
+
+ /**
+ * Constructs a new String To Type Instance Map test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToTypeInstanceMapTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this String To Type Instance Map test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(Map.Entry<String, TypeInstance> fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this String To Type Instance Map test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map.Entry<String, TypeInstance> getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void setUp() throws Exception {
+ setFixture((Map.Entry<String, TypeInstance>)LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //StringToTypeInstanceMapTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeMapTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeMapTest.java
new file mode 100644
index 00000000000..40b67cb1081
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeMapTest.java
@@ -0,0 +1,93 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String To Type Map</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToTypeMapTest extends TestCase {
+
+ /**
+ * The fixture for this String To Type Map test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map.Entry<String, Type> fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(StringToTypeMapTest.class);
+ }
+
+ /**
+ * Constructs a new String To Type Map test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToTypeMapTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this String To Type Map test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(Map.Entry<String, Type> fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this String To Type Map test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Map.Entry<String, Type> getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void setUp() throws Exception {
+ setFixture((Map.Entry<String, Type>)LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_TYPE_MAP));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //StringToTypeMapTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringTypeTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringTypeTest.java
new file mode 100644
index 00000000000..8171b4f43f0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringTypeTest extends TypeTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(StringTypeTest.class);
+ }
+
+ /**
+ * Constructs a new String Type test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringTypeTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this String Type test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected StringType getFixture() {
+ return (StringType)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createStringType());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //StringTypeTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorDescriptorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorDescriptorTest.java
new file mode 100644
index 00000000000..28d31d3572e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorDescriptorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Top Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TopLayerOperatorDescriptorTest extends LayerOperatorDescriptorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(TopLayerOperatorDescriptorTest.class);
+ }
+
+ /**
+ * Constructs a new Top Layer Operator Descriptor test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TopLayerOperatorDescriptorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Top Layer Operator Descriptor test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected TopLayerOperatorDescriptor getFixture() {
+ return (TopLayerOperatorDescriptor)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //TopLayerOperatorDescriptorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorTest.java
new file mode 100644
index 00000000000..30514a4e176
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Top Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TopLayerOperatorTest extends AbstractLayerOperatorTest {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(TopLayerOperatorTest.class);
+ }
+
+ /**
+ * Constructs a new Top Layer Operator test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TopLayerOperatorTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Top Layer Operator test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected TopLayerOperator getFixture() {
+ return (TopLayerOperator)fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createTopLayerOperator());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //TopLayerOperatorTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeInstanceTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeInstanceTest.java
new file mode 100644
index 00000000000..7f9d48b741a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeInstanceTest.java
@@ -0,0 +1,102 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Type Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String) <em>Set Value From String</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value From Instance</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public abstract class TypeInstanceTest extends TestCase {
+
+ /**
+ * The fixture for this Type Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeInstance fixture = null;
+
+ /**
+ * Constructs a new Type Instance test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeInstanceTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Type Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(TypeInstance fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Type Instance test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeInstance getFixture() {
+ return fixture;
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+ * @generated
+ */
+ public void testGetCmdValue() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String) <em>Set Value From String</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String)
+ * @generated
+ */
+ public void testSetValueFromString__String() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value From Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ * @generated
+ */
+ public void testSetValueFromInstance__TypeInstance() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //TypeInstanceTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeRegistryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeRegistryTest.java
new file mode 100644
index 00000000000..ed4e89d41b9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeRegistryTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Type Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypeRegistryTest extends TestCase {
+
+ /**
+ * The fixture for this Type Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeRegistry fixture = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static void main(String[] args) {
+ TestRunner.run(TypeRegistryTest.class);
+ }
+
+ /**
+ * Constructs a new Type Registry test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeRegistryTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets the fixture for this Type Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setFixture(TypeRegistry fixture) {
+ this.fixture = fixture;
+ }
+
+ /**
+ * Returns the fixture for this Type Registry test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeRegistry getFixture() {
+ return fixture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#setUp()
+ * @generated
+ */
+ @Override
+ protected void setUp() throws Exception {
+ setFixture(LayersFactory.eINSTANCE.createTypeRegistry());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see junit.framework.TestCase#tearDown()
+ * @generated
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ setFixture(null);
+ }
+
+} //TypeRegistryTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeTest.java
new file mode 100644
index 00000000000..a4900c7d6d3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeTest.java
@@ -0,0 +1,55 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance() <em>Create Instance</em>}</li>
+ * </ul>
+ * </p>
+ * @generated
+ */
+public abstract class TypeTest extends FolderElementTest {
+
+ /**
+ * Constructs a new Type test case with the given name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Returns the fixture for this Type test case.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Type getFixture() {
+ return (Type)fixture;
+ }
+
+ /**
+ * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance() <em>Create Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance()
+ * @generated
+ */
+ public void testCreateInstance() {
+ // TODO: implement this operation test method
+ // Ensure that you remove @generated or mark it @generated NOT
+ fail();
+ }
+
+} //TypeTest
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/.classpath
new file mode 100644
index 00000000000..feda953f8e0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="test"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/.project b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/.project
new file mode 100644
index 00000000000..eb81c1833e4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.stackmodel</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.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..e4c6a78de80
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.gmf.runtime.notation;visibility:=reexport,
+ org.junit,
+ org.eclipse.emf.ecore.xmi;bundle-version="2.9.0",
+ org.eclipse.uml2.uml;bundle-version="4.1.0",
+ org.eclipse.ocl.ecore;bundle-version="3.3.0",
+ org.eclipse.emf.query.ocl;bundle-version="2.0.0",
+ com.google.guava;bundle-version="11.0.2"
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.papyrus.layers.configmodel.layersconfig,
+ org.eclipse.papyrus.layers.configmodel.layersconfig.impl,
+ org.eclipse.papyrus.layers.configmodel.layersconfig.util,
+ org.eclipse.papyrus.layers.stackmodel,
+ org.eclipse.papyrus.layers.stackmodel.command,
+ org.eclipse.papyrus.layers.stackmodel.layers,
+ org.eclipse.papyrus.layers.stackmodel.layers.impl,
+ org.eclipse.papyrus.layers.stackmodel.layers.util,
+ org.eclipse.papyrus.layers.stackmodel.notifier
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/about.html b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/about.html
new file mode 100644
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/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/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/build.properties
new file mode 100644
index 00000000000..46a580a1ad1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/build.properties
@@ -0,0 +1,23 @@
+#
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html,\
+ bin/,\
+ test/models/model1.notation
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = .classpath,\
+ .project,\
+ META-INF/,\
+ about.html,\
+ build.properties,\
+ model/,\
+ plugin.properties,\
+ plugin.xml,\
+ src/,\
+ test/
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.di b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.di
new file mode 100644
index 00000000000..be066f27bda
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.di
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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="layers.notation#_mmXS0LcqEeK8_t7Rpq6ZJA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_y-BQANa7EeKPiuTfpuvqHA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_C_qusNa8EeKPiuTfpuvqHA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_QLWs4Na8EeKPiuTfpuvqHA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_XXUswNhbEeKgkM6XJF9t4A"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_ePKuUNhbEeKgkM6XJF9t4A"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_Dtu4wNjkEeKQqZMBCFd2Uw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_-aAtoNjpEeKQqZMBCFd2Uw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_gSkRsNxGEeKwptaAAanMDg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_j4XzEOT_EeKSDdPH_NXL-g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_UCFqMO3vEeKwLp35IbAIig"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_Up8U8P91EeKlldop5b2mtw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layers.notation#_Vjf6UHbuEeOlpfB_tZS-QA"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="layers.notation#_mmXS0LcqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_y-BQANa7EeKPiuTfpuvqHA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_Vjf6UHbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_C_qusNa8EeKPiuTfpuvqHA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_QLWs4Na8EeKPiuTfpuvqHA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_XXUswNhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_ePKuUNhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_Dtu4wNjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_-aAtoNjpEeKQqZMBCFd2Uw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_gSkRsNxGEeKwptaAAanMDg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_j4XzEOT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_UCFqMO3vEeKwLp35IbAIig"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layers.notation#_Up8U8P91EeKlldop5b2mtw"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.ecore b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.ecore
new file mode 100644
index 00000000000..c68bcef0ddf
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.ecore
@@ -0,0 +1,578 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="layers" nsURI="org.eclipse.papyrus.layers.0.10" nsPrefix="org.eclipse.papyrus.layers.stackmodel.layers">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Start the LayesStack.&#xD;&#xA;This method should be called after the LayersStack creation. It is not called from the constructor, because &#xD;&#xA;the initialisation can differ if the LayersStack is created by the user or by EMF after a reloading.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerNamedStyle" eSuperTypes="../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layersStack" ordered="false"
+ upperBound="-1" eType="#//LayersStack" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayersStack" eSuperTypes="#//LayersContainer">
+ <eOperations name="getComputePropertyValueCommand" ordered="false" lowerBound="1"
+ eType="#//ComputePropertyValueCommand" eExceptions="#//LayersException">
+ <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getPropertiesComputePropertyValueCommand" upperBound="-1" eType="#//ComputePropertyValueCommand"
+ eExceptions="#//LayersException">
+ <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ <eParameters name="property" lowerBound="1" upperBound="-1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getViewsComputePropertyValueCommand" upperBound="-1" eType="#//ComputePropertyValueCommand"
+ eExceptions="#//LayersException">
+ <eParameters name="view" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="startAfterCreation" ordered="false" lowerBound="1"/>
+ <eOperations name="attachLayers" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Start the LayersStack after a reloading by EMF. This method should be explicitly called after a reloading.&#xD;&#xA;The method usually start the layer behaviors."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="attach" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Try to attach this Layer. If successful, the state go to &quot;attached&quot;. Otherwise, an exception is thrown.&#xD;&#xA;A Layer can be attached if its required attributes are set.&#xD;&#xA;Required attributes:&#xD;&#xA;&lt;ul>&#xD;&#xA; &lt;li>application&lt;/li>&#xD;&#xA; &lt;li>owningLayerStack&lt;/li>&#xD;&#xA; &lt;li>parent container&lt;/li>&#xD;&#xA; &lt;li>&lt;/li>&#xD;&#xA;&lt;/ul>&#xD;&#xA;Just after enterring in &quot;attached&quot; state, the enterAttachedState() method is called.&#xD;&#xA;If this Layer is successfully attached, then attach subLayers."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="detach" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Detach the Layer. The state go to &quot;detached&quot;.&#xD;&#xA;Associated behavior are stopped."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="enterAttachedState" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This method is called by the class immediately after entering in attached state.&#xD;&#xA;The methodcan be used to start the layer behaviors."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="exitAttachedState" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This method is called just before this Layer leave the attached state.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layers" ordered="false"
+ eType="#//LayerExpression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="diagram" ordered="false"
+ eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="state" ordered="false"
+ unique="false" lowerBound="1" eType="#//LayerState" defaultValueLiteral="detached"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerExpression" abstract="true" eSuperTypes="#//ApplicationDependantElement">
+ <eOperations name="getComputePropertyValueCommand" ordered="false" lowerBound="1"
+ eType="#//ComputePropertyValueCommand" eExceptions="#//LayersException">
+ <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getViewsComputePropertyValueCommand" upperBound="-1" eType="#//ComputePropertyValueCommand"
+ eExceptions="#//LayersException">
+ <eParameters name="view" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getPropertiesComputePropertyValueCommand" upperBound="-1" eType="#//ComputePropertyValueCommand"
+ eExceptions="#//LayersException">
+ <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ <eParameters name="property" lowerBound="1" upperBound="-1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="attachToLayersStack" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Method called to specify that this Layer should be initialized for the specified LayerStack.&#xD;&#xA;Init this Layer for the specified LayersStack.&#xD;&#xA;This method is called by the LayersStack when it detect that tha layer is attached to it.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eParameters name="owningLayersStack" ordered="false" lowerBound="1" eType="#//LayersStack"/>
+ </eOperations>
+ <eOperations name="getLayersStack" ordered="false" lowerBound="1" eType="#//LayersStack"
+ eExceptions="#//NotFoundException">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A checked version of getOwningLayersStack.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="enterAttachedState" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This method is called by the class immediately after entering in attached state.&#xD;&#xA;The methodcan be used to start the layer behaviors."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="attach" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Try to attach this Layer. If successful, the state go to &quot;attached&quot;. Otherwise, an exception is thrown.&#xD;&#xA;A Layer can be attached if its required attributes are set.&#xD;&#xA;Required attributes:&#xD;&#xA;&lt;ul>&#xD;&#xA; &lt;li>application&lt;/li>&#xD;&#xA; &lt;li>owningLayerStack&lt;/li>&#xD;&#xA; &lt;li>parent container&lt;/li>&#xD;&#xA; &lt;li>&lt;/li>&#xD;&#xA;&lt;/ul>&#xD;&#xA;Just after enterring in &quot;attached&quot; state, the enterAttachedState() method is called.&#xD;&#xA;If this Layer is successfully attached, then attach subLayers."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="detach" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Detach the Layer. The state go to &quot;detached&quot;.&#xD;&#xA;Associated behavior are stopped."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="exitAttachedState" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This method is called just before this Layer leave the attached state.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLayerEnabledInternal"
+ ordered="false" lowerBound="1" eType="#//boolean" changeable="false" volatile="true"
+ transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLayerEnabled" ordered="false"
+ lowerBound="1" eType="#//boolean" defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBranchEnabled" ordered="false"
+ lowerBound="1" eType="#//boolean" transient="true" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is the branch from this node to the root enabled ?&#xD;&#xA;A branch is enabled if all node of the branch are enabled.&#xD;&#xA;In other world, if an ancestor node is disable, the branch is disabled.&#xD;&#xA;Setting the value of this node set the value of the subnodes."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningLayersStack" ordered="false"
+ eType="#//LayersStack"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="state" ordered="false"
+ unique="false" lowerBound="1" eType="#//LayerState" defaultValueLiteral="detached"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ApplicationDependantElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="application" ordered="false"
+ eType="#//LayersStackApplication"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayersStackApplication" eSuperTypes="#//FolderElement">
+ <eOperations name="getLayersStackFor" ordered="false" lowerBound="1" eType="#//LayersStack">
+ <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+ </eOperations>
+ <eOperations name="removeLayersStackFor" ordered="false" lowerBound="1">
+ <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+ </eOperations>
+ <eOperations name="isLayersStackAttachedFor" ordered="false" lowerBound="1" eType="#//boolean">
+ <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+ </eOperations>
+ <eOperations name="createLayersStackFor" ordered="false" lowerBound="1" eType="#//LayersStack">
+ <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+ </eOperations>
+ <eOperations name="lookupLayersStackFor" ordered="false" lowerBound="1" eType="#//LayersStack"
+ eExceptions="#//NotFoundException">
+ <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layersStacks" ordered="false"
+ upperBound="-1" eType="#//LayersStack" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layerStackRegistry" ordered="false"
+ lowerBound="1" eType="#//LayerStackDescriptorRegistry" transient="true" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertyRegistry" ordered="false"
+ lowerBound="1" eType="#//PropertyRegistry" transient="true" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layerDescriptorRegistry"
+ ordered="false" lowerBound="1" eType="#//LayerDescriptorRegistry" transient="true"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="factory" ordered="false"
+ lowerBound="1" eType="#//LayerApplicationFactory" transient="true" containment="true"
+ eOpposite="#//LayerApplicationFactory/application"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertySetterRegistry"
+ ordered="false" eType="#//PropertySetterRegistry" transient="true" containment="true"
+ eOpposite="#//PropertySetterRegistry/application"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layerOperatorDescriptorRegistry"
+ ordered="false" eType="#//LayerOperatorDescriptorRegistry" transient="true"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FolderElement" abstract="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerStackDescriptorRegistry"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertyRegistry">
+ <eOperations name="getPropertyIndex" ordered="false" lowerBound="1" eType="#//int"
+ eExceptions="#//NotFoundException">
+ <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="getProperty" ordered="false" lowerBound="1" eType="#//Property"
+ eExceptions="#//NotFoundException">
+ <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="addProperty" ordered="false" lowerBound="1">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
+ eType="#//Property" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeRegistry" ordered="false"
+ eType="#//TypeRegistry" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertiesCount" ordered="false"
+ lowerBound="1" eType="#//int" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//FolderElement">
+ <eOperations name="createInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"
+ eExceptions="#//BadStateException"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//Type"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
+ eType="#//TypeInstance" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="index" ordered="false"
+ lowerBound="1" eType="#//int" defaultValueLiteral="-1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#//FolderElement">
+ <eOperations name="createInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="metamodel" ordered="false"
+ lowerBound="1" eType="#//Metamodel"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Metamodel" eSuperTypes="#//FolderElement">
+ <eOperations name="getEPackage" ordered="false" lowerBound="1" eType="#//EPackage"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsuri" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pluginID" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="ePackageInstanceName" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTypeValid" ordered="false"
+ lowerBound="1" eType="#//boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="boolean" instanceClassName="boolean"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EPackage" instanceClassName="org.eclipse.emf.ecore.EPackage"/>
+ <eClassifiers xsi:type="ecore:EClass" name="TypeInstance" abstract="true" eSuperTypes="#//ComputePropertyValueCommandItf">
+ <eOperations name="setValueFromString" ordered="false" lowerBound="1">
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="setValueFromInstance" ordered="false" lowerBound="1">
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//TypeInstance"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ComputePropertyValueCommandItf" instanceClassName="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand"
+ abstract="true" interface="true">
+ <eOperations name="getCmdValue" ordered="false" lowerBound="1" eType="#//TypeInstance"
+ eExceptions="#//LayersException"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="LayersException" instanceClassName="org.eclipse.papyrus.layers.stackmodel.LayersException"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="int" instanceClassName="int"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="BadStateException" instanceClassName="org.eclipse.papyrus.layers.stackmodel.BadStateException">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="LayersException"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypeRegistry">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="types" ordered="false"
+ upperBound="-1" eType="#//StringToTypeMap" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringToTypeMap" instanceClassName="java.util.Map$Entry">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//Type" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NotFoundException" instanceClassName="org.eclipse.papyrus.layers.stackmodel.NotFoundException">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="LayersException"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerDescriptorRegistry">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layerDescriptors" ordered="false"
+ upperBound="-1" eType="#//LayerDescriptor" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerDescriptor">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertyRegistry" ordered="false"
+ lowerBound="1" eType="#//PropertyRegistry"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerApplicationFactory">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="application" ordered="false"
+ eType="#//LayersStackApplication" transient="true" eOpposite="#//LayersStackApplication/factory"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertySetterRegistry">
+ <eOperations name="getPropertySetter" ordered="false" lowerBound="1" eType="#//PropertySetter"
+ eExceptions="#//NotFoundException">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getPropertySetter" ordered="false" lowerBound="1" eType="#//PropertySetter"
+ eExceptions="#//NotFoundException">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="addPropertySetter" ordered="false" lowerBound="1">
+ <eParameters name="setter" ordered="false" lowerBound="1" eType="#//PropertySetter"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertySetters" upperBound="-1"
+ eType="#//PropertySetter"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="setterMap" ordered="false"
+ upperBound="-1" eType="#//StringToPropertySetter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="application" ordered="false"
+ eType="#//LayersStackApplication" transient="true" eOpposite="#//LayersStackApplication/propertySetterRegistry"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertySetter" abstract="true">
+ <eOperations name="setValue" ordered="false" lowerBound="1">
+ <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//TypeInstance"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="property" ordered="false"
+ eType="#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyName" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringToPropertySetter" instanceClassName="java.util.Map$Entry">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//PropertySetter" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerOperatorDescriptorRegistry">
+ <eOperations name="addLayerOperatorDescriptor" ordered="false" lowerBound="1">
+ <eParameters name="descriptor" ordered="false" lowerBound="1" eType="#//LayerOperatorDescriptor"/>
+ </eOperations>
+ <eOperations name="getLayerOperatorDescriptor" ordered="false" lowerBound="1"
+ eType="#//LayerOperatorDescriptor" eExceptions="#//NotFoundException">
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="addPropertyOperator" ordered="false" lowerBound="1">
+ <eParameters name="operator" ordered="false" lowerBound="1" eType="#//PropertyOperator"/>
+ </eOperations>
+ <eOperations name="getPropertyOperator" ordered="false" lowerBound="1" eType="#//PropertyOperator"
+ eExceptions="#//NotFoundException">
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="attachOperatorToDescriptor" ordered="false" lowerBound="1"
+ eExceptions="#//NotFoundException">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ <eParameters name="operatorName" ordered="false" lowerBound="1" eType="#//String"/>
+ <eParameters name="layerDescriptorName" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="createLayerOperator" ordered="false" lowerBound="1" eType="#//AbstractLayerOperator"
+ eExceptions="#//LayersException">
+ <eParameters name="layerOperatorID" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="descriptors" ordered="false"
+ upperBound="-1" eType="#//LayerOperatorDescriptor" transient="true" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertyOperators" upperBound="-1"
+ eType="#//PropertyOperator" transient="true" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyCollectionSize"
+ ordered="false" lowerBound="1" eType="#//int"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultOperator" ordered="false"
+ lowerBound="1" eType="#//DefaultPropertyOperator" changeable="false" transient="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerOperatorDescriptor">
+ <eOperations name="getPropertyOperator" ordered="false" lowerBound="1" eType="#//PropertyOperator"
+ eExceptions="#//NotFoundException">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="setPropertyOperator" ordered="false" lowerBound="1">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ <eParameters name="operator" ordered="false" lowerBound="1" eType="#//PropertyOperator"/>
+ </eOperations>
+ <eOperations name="createLayerOperator" ordered="false" lowerBound="1" eType="#//AbstractLayerOperator"/>
+ <eOperations name="setPropertyCollectionSize" ordered="false" lowerBound="1">
+ <eParameters name="size" ordered="false" lowerBound="1" eType="#//int"/>
+ <eParameters name="defaultPropertyOperator" ordered="false" lowerBound="1" eType="#//DefaultPropertyOperator"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertyOperators" upperBound="-1"
+ eType="#//PropertyOperator" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertyOperator">
+ <eOperations name="getComputePropertyValueCommand" ordered="false" lowerBound="1"
+ eType="#//ComputePropertyValueCommand" eExceptions="#//LayersException">
+ <eParameters name="property" upperBound="-1" eType="#//ComputePropertyValueCommand"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ComputePropertyValueCommand" instanceClassName="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractLayerOperator" abstract="true"
+ eSuperTypes="#//LayerOperator">
+ <eOperations name="isDescriptorSet" ordered="false" lowerBound="1" eType="#//boolean"/>
+ <eOperations name="resetDescriptor" ordered="false" lowerBound="1"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layerOperatorDescriptor"
+ ordered="false" lowerBound="1" eType="#//LayerOperatorDescriptor" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="layerOperatorDescriptorName"
+ ordered="false" lowerBound="1" eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerOperator" abstract="true" eSuperTypes="#//LayerExpression #//LayersContainer">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layers" upperBound="-1"
+ eType="#//LayerExpression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayersContainer" abstract="true" interface="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Layers implementing this interface can contains others layers.&#xD;&#xA;The interface provide one method allowing to add a LayerExpression to the container."/>
+ </eAnnotations>
+ <eOperations name="addLayer" ordered="false" lowerBound="1">
+ <eParameters name="layer" ordered="false" lowerBound="1" eType="#//LayerExpression"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DefaultPropertyOperator" eSuperTypes="#//PropertyOperator"/>
+ <eClassifiers xsi:type="ecore:EEnum" name="LayerState">
+ <eLiterals name="detached"/>
+ <eLiterals name="attached" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractLayer" abstract="true" eSuperTypes="#//LayerExpression">
+ <eOperations name="addPropertyInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"
+ eExceptions="#//LayersException">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="removePropertyInstance" ordered="false" lowerBound="1">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getPropertyInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"
+ eExceptions="#//LayersException">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getPropertyInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"
+ eExceptions="#//LayersException">
+ <eParameters name="property" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertyValues" unique="false"
+ upperBound="-1" eType="#//TypeInstance"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertyValueMap" ordered="false"
+ upperBound="-1" eType="#//StringToTypeInstanceMap" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layerDescriptor" ordered="false"
+ lowerBound="1" eType="#//LayerDescriptor"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="views" ordered="false"
+ upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attachedProperties" ordered="false"
+ upperBound="-1" eType="#//Property" volatile="true" transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringToTypeInstanceMap" instanceClassName="java.util.Map$Entry">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//TypeInstance" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Folder" eSuperTypes="#//FolderElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elements" ordered="false"
+ upperBound="-1" eType="#//FolderElement" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Object" instanceClassName="java.lang.Object"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IntInstance" eSuperTypes="#//TypeInstance">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//int"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanInstance" eSuperTypes="#//TypeInstance">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringInstance" eSuperTypes="#//TypeInstance">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IntType" eSuperTypes="#//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanType" eSuperTypes="#//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StringType" eSuperTypes="#//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="CustomType" eSuperTypes="#//Type">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="classifier" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TopLayerOperator" eSuperTypes="#//AbstractLayerOperator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StackedLayerOperator" eSuperTypes="#//AbstractLayerOperator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="CustomLayerOperator" eSuperTypes="#//LayerOperator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertyIndex">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="property" ordered="false"
+ lowerBound="1" eType="#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="index" ordered="false"
+ lowerBound="1" eType="#//int"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringToPropertyIndexMap" instanceClassName="java.util.Map$Entry">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ eType="#//PropertyIndex" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleLayerDescriptor" eSuperTypes="#//LayerDescriptor"/>
+ <eClassifiers xsi:type="ecore:EClass" name="RegExpLayerDescriptor" eSuperTypes="#//LayerDescriptor"/>
+ <eClassifiers xsi:type="ecore:EClass" name="NullInstance" eSuperTypes="#//TypeInstance">
+ <eOperations name="getInstance" ordered="false" lowerBound="1" eType="#//NullInstance"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RegExpLayer" eSuperTypes="#//AbstractLayer">
+ <eOperations name="activate" ordered="false" lowerBound="1">
+ <eParameters name="newParentLayer" ordered="false" lowerBound="1" eType="#//AbstractLayerOperator"/>
+ </eOperations>
+ <eOperations name="deactivate" ordered="false" lowerBound="1">
+ <eParameters name="oldParentLayer" ordered="false" lowerBound="1" eType="#//AbstractLayerOperator"/>
+ </eOperations>
+ <eOperations name="isDerivedView" ordered="false" lowerBound="1" eType="#//boolean"
+ eExceptions="#//LayersException">
+ <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ </eOperations>
+ <eOperations name="attachDerivedView" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+ <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ </eOperations>
+ <eOperations name="attachDerivedViews" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+ <eParameters name="views" ordered="false" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ </eOperations>
+ <eOperations name="attachDerivedViews" ordered="false" lowerBound="1" eExceptions="#//LayersException"/>
+ <eOperations name="lookupDerivedViews" ordered="false" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"
+ eExceptions="#//LayersException">
+ <eParameters name="views" ordered="false" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="expr" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDomainChangedEventDependant"
+ ordered="false" lowerBound="1" eType="#//boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="domainChangedEventLevel"
+ ordered="false" lowerBound="1" eType="#//EventLevel"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDiagramChangedEventDependant"
+ ordered="false" lowerBound="1" eType="#//boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="diagramChangedEventLevel"
+ ordered="false" lowerBound="1" eType="#//EventLevel"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="expressionContextObjectType"
+ ordered="false" lowerBound="1" eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="EventLevel">
+ <eLiterals name="level1"/>
+ <eLiterals name="allLevels" value="-1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Layer" eSuperTypes="#//AbstractLayer"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Color" eSuperTypes="#//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ColorInstance" eSuperTypes="#//TypeInstance">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//int"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FillInstance" eSuperTypes="#//TypeInstance">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transparency" ordered="false"
+ lowerBound="1" eType="#//int"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fillColor" ordered="false"
+ lowerBound="1" eType="#//ColorInstance" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Fill" eSuperTypes="#//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="FillPropertySetter" eSuperTypes="#//PropertySetter"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IsValidPropertySetter" eSuperTypes="#//PropertySetter"/>
+ <eClassifiers xsi:type="ecore:EClass" name="NullPropertySetter" eSuperTypes="#//PropertySetter"/>
+ <eClassifiers xsi:type="ecore:EClass" name="LineType" eSuperTypes="#//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="LineInstance" eSuperTypes="#//TypeInstance">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineColor" ordered="false"
+ lowerBound="1" eType="#//int"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineWith" ordered="false"
+ lowerBound="1" eType="#//int"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LinePropertySetter" eSuperTypes="#//PropertySetter"/>
+ <eClassifiers xsi:type="ecore:EClass" name="FontPropertySetter" eSuperTypes="#//PropertySetter"/>
+ <eClassifiers xsi:type="ecore:EClass" name="FontInstance" eSuperTypes="#//TypeInstance">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontColor" ordered="false"
+ lowerBound="1" eType="#//int" defaultValueLiteral="15053796"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontName" ordered="false"
+ lowerBound="1" eType="#//String" defaultValueLiteral="Segoe UI"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontHeigh" ordered="false"
+ lowerBound="1" eType="#//int" defaultValueLiteral="9"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="bold" ordered="false" lowerBound="1"
+ eType="#//boolean" defaultValueLiteral="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FontType" eSuperTypes="#//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IsVisiblePropertySetter" eSuperTypes="#//PropertySetter"/>
+ <eClassifiers xsi:type="ecore:EClass" name="TopLayerOperatorDescriptor" eSuperTypes="#//LayerOperatorDescriptor"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StackedLayerOperatorDescriptor" eSuperTypes="#//LayerOperatorDescriptor"/>
+ <eClassifiers xsi:type="ecore:EClass" name="CustomPropertyOperator" eSuperTypes="#//PropertyOperator">
+ <eOperations name="resetOperatorInstance" ordered="false" lowerBound="1" eExceptions="#//LayersException"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="classname" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="operatorInstance" ordered="false"
+ lowerBound="1" eType="#//CustomPropertyOpertorInstance"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="classBundleID" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="CustomPropertyOpertorInstance" instanceClassName="org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AndStackedLayerOperatorDescriptor" eSuperTypes="#//StackedLayerOperatorDescriptor"/>
+ <eClassifiers xsi:type="ecore:EClass" name="OrStackedLayerOperatorDescriptor" eSuperTypes="#//StackedLayerOperatorDescriptor"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IsAbstractUmlSetter" eSuperTypes="#//PropertySetter"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AllViewsDerivedLayer" eSuperTypes="#//AbstractLayer"/>
+</ecore:EPackage>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.genmodel b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.genmodel
new file mode 100644
index 00000000000..7e4485a10d6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.genmodel
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+ modelDirectory="/org.eclipse.papyrus.layers.stackmodel/src" modelPluginID="org.eclipse.papyrus.layers.stackmodel"
+ modelName="Layers" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="6.0" copyrightFields="false"
+ usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation"
+ operationReflection="true" importOrganizing="true">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+ <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+ <details key="UNION_PROPERTIES" value="REPORT"/>
+ <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+ <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+ <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+ <details key="COMMENTS" value="PROCESS"/>
+ <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+ <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+ <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+ <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+ <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+ <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+ <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+ <details key="DERIVED_FEATURES" value="PROCESS"/>
+ <details key="OPERATION_BODIES" value="IGNORE"/>
+ <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+ <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+ </genAnnotations>
+ <foreignModel>layers.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="Layers" basePackage="org.eclipse.papyrus.layers.stackmodel"
+ disposableProviderFactory="true" ecorePackage="layers.ecore#/">
+ <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="layers.ecore#//LayerState">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layers.ecore#//LayerState/detached"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layers.ecore#//LayerState/attached"/>
+ </genEnums>
+ <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="layers.ecore#//EventLevel">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layers.ecore#//EventLevel/level1"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layers.ecore#//EventLevel/allLevels"/>
+ </genEnums>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//String"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//boolean"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//EPackage"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//LayersException"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//int"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//BadStateException"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//NotFoundException"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//ComputePropertyValueCommand"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//Object"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//CustomPropertyOpertorInstance"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerNamedStyle">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerNamedStyle/layersStack"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayersStack">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStack/layers"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayersStack/name"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayersStack/description"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStack/diagram"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayersStack/state"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/getComputePropertyValueCommand">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getComputePropertyValueCommand/view"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getComputePropertyValueCommand/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/getPropertiesComputePropertyValueCommand">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getPropertiesComputePropertyValueCommand/view"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getPropertiesComputePropertyValueCommand/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/getViewsComputePropertyValueCommand">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getViewsComputePropertyValueCommand/view"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getViewsComputePropertyValueCommand/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/startAfterCreation"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/attachLayers"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/attach"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/detach"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/enterAttachedState"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/exitAttachedState"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//LayerExpression">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/name"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/description"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+ ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/isLayerEnabledInternal"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/isLayerEnabled"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/isBranchEnabled"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayerExpression/owningLayersStack"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/state"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/getComputePropertyValueCommand">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getComputePropertyValueCommand/view"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getComputePropertyValueCommand/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/getViewsComputePropertyValueCommand">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getViewsComputePropertyValueCommand/view"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getViewsComputePropertyValueCommand/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/getPropertiesComputePropertyValueCommand">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getPropertiesComputePropertyValueCommand/view"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getPropertiesComputePropertyValueCommand/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/attachToLayersStack">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/attachToLayersStack/owningLayersStack"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/getLayersStack"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/enterAttachedState"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/attach"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/detach"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/exitAttachedState"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//ApplicationDependantElement">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//ApplicationDependantElement/application"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayersStackApplication">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/layersStacks"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/layerStackRegistry"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/propertyRegistry"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/layerDescriptorRegistry"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/factory"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/propertySetterRegistry"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/layerOperatorDescriptorRegistry"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/getLayersStackFor">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/getLayersStackFor/diagram"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/removeLayersStackFor">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/removeLayersStackFor/diagram"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/isLayersStackAttachedFor">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/isLayersStackAttachedFor/diagram"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/createLayersStackFor">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/createLayersStackFor/diagram"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/lookupLayersStackFor">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/lookupLayersStackFor/diagram"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//FolderElement"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerStackDescriptorRegistry"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertyRegistry">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//PropertyRegistry/properties"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//PropertyRegistry/typeRegistry"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+ ecoreFeature="ecore:EAttribute layers.ecore#//PropertyRegistry/propertiesCount"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertyRegistry/getPropertyIndex">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertyRegistry/getPropertyIndex/propertyName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertyRegistry/getProperty">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertyRegistry/getProperty/propertyName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertyRegistry/addProperty">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertyRegistry/addProperty/property"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Property">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//Property/type"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//Property/defaultValue"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Property/name"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Property/description"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Property/index"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//Property/createInstance"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//Type">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//Type/metamodel"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Type/name"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Type/description"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//Type/createInstance"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Metamodel">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/name"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/description"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/nsuri"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/pluginID"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/ePackageInstanceName"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/isTypeValid"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//Metamodel/getEPackage"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//TypeInstance">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//TypeInstance/setValueFromString">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//TypeInstance/setValueFromString/value"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//TypeInstance/setValueFromInstance">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//TypeInstance/setValueFromInstance/value"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//ComputePropertyValueCommandItf">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//ComputePropertyValueCommandItf/getCmdValue"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//TypeRegistry">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//TypeRegistry/types"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringToTypeMap">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//StringToTypeMap/value"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringToTypeMap/key"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerDescriptorRegistry">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerDescriptorRegistry/layerDescriptors"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerDescriptor">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayerDescriptor/propertyRegistry"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerApplicationFactory">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+ ecoreFeature="ecore:EReference layers.ecore#//LayerApplicationFactory/application"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertySetterRegistry">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//PropertySetterRegistry/propertySetters"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//PropertySetterRegistry/setterMap"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+ ecoreFeature="ecore:EReference layers.ecore#//PropertySetterRegistry/application"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertySetterRegistry/getPropertySetter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetterRegistry/getPropertySetter/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertySetterRegistry/getPropertySetter.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetterRegistry/getPropertySetter.1/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertySetterRegistry/addPropertySetter">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetterRegistry/addPropertySetter/setter"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertySetter">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//PropertySetter/property"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//PropertySetter/propertyName"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertySetter/setValue">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetter/setValue/view"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetter/setValue/value"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringToPropertySetter">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringToPropertySetter/key"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//StringToPropertySetter/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerOperatorDescriptorRegistry">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperatorDescriptorRegistry/descriptors"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperatorDescriptorRegistry/propertyOperators"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerOperatorDescriptorRegistry/propertyCollectionSize"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperatorDescriptorRegistry/defaultOperator"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/addLayerOperatorDescriptor">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/addLayerOperatorDescriptor/descriptor"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/getLayerOperatorDescriptor">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/getLayerOperatorDescriptor/name"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/addPropertyOperator">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/addPropertyOperator/operator"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/getPropertyOperator">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/getPropertyOperator/name"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/attachOperatorToDescriptor">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/attachOperatorToDescriptor/property"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/attachOperatorToDescriptor/operatorName"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/attachOperatorToDescriptor/layerDescriptorName"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/createLayerOperator">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/createLayerOperator/layerOperatorID"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerOperatorDescriptor">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperatorDescriptor/propertyOperators"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerOperatorDescriptor/name"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptor/getPropertyOperator">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/getPropertyOperator/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptor/setPropertyOperator">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/setPropertyOperator/property"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/setPropertyOperator/operator"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptor/createLayerOperator"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptor/setPropertyCollectionSize">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/setPropertyCollectionSize/size"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/setPropertyCollectionSize/defaultPropertyOperator"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertyOperator">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//PropertyOperator/name"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertyOperator/getComputePropertyValueCommand">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertyOperator/getComputePropertyValueCommand/property"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//AbstractLayerOperator">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayerOperator/layerOperatorDescriptor"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//AbstractLayerOperator/layerOperatorDescriptorName"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayerOperator/isDescriptorSet"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayerOperator/resetDescriptor"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//LayerOperator">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperator/layers"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//LayersContainer">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersContainer/addLayer">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersContainer/addLayer/layer"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//DefaultPropertyOperator"/>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//AbstractLayer">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/propertyValues"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/propertyValueMap"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/layerDescriptor"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/views"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/attachedProperties"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayer/addPropertyInstance">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//AbstractLayer/addPropertyInstance/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayer/removePropertyInstance">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//AbstractLayer/removePropertyInstance/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayer/getPropertyInstance">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//AbstractLayer/getPropertyInstance/property"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayer/getPropertyInstance.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//AbstractLayer/getPropertyInstance.1/property"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringToTypeInstanceMap">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringToTypeInstanceMap/key"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//StringToTypeInstanceMap/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Folder">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//Folder/elements"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Folder/name"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IntInstance">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//IntInstance/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//BooleanInstance">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//BooleanInstance/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringInstance">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringInstance/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IntType"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//BooleanType"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringType"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//CustomType">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//CustomType/classifier"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//TopLayerOperator"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StackedLayerOperator"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//CustomLayerOperator"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertyIndex">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//PropertyIndex/property"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//PropertyIndex/index"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringToPropertyIndexMap">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//StringToPropertyIndexMap/value"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringToPropertyIndexMap/key"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//SimpleLayerDescriptor"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//RegExpLayerDescriptor"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//NullInstance">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//NullInstance/getInstance"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//RegExpLayer">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/expr"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/language"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/isDomainChangedEventDependant"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/domainChangedEventLevel"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/isDiagramChangedEventDependant"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/diagramChangedEventLevel"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/expressionContextObjectType"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/activate">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/activate/newParentLayer"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/deactivate">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/deactivate/oldParentLayer"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/isDerivedView">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/isDerivedView/view"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/attachDerivedView">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/attachDerivedView/view"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/attachDerivedViews">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/attachDerivedViews/views"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/attachDerivedViews.1"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/lookupDerivedViews">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/lookupDerivedViews/views"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Layer"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Color"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//ColorInstance">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//ColorInstance/value"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FillInstance">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FillInstance/transparency"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layers.ecore#//FillInstance/fillColor"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Fill"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FillPropertySetter"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IsValidPropertySetter"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//NullPropertySetter"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LineType"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LineInstance">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LineInstance/lineColor"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LineInstance/lineWith"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LinePropertySetter"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FontPropertySetter"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FontInstance">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FontInstance/fontColor"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FontInstance/fontName"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FontInstance/fontHeigh"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FontInstance/bold"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FontType"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IsVisiblePropertySetter"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//TopLayerOperatorDescriptor"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StackedLayerOperatorDescriptor"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//CustomPropertyOperator">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//CustomPropertyOperator/classname"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EAttribute layers.ecore#//CustomPropertyOperator/operatorInstance"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//CustomPropertyOperator/classBundleID"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//CustomPropertyOperator/resetOperatorInstance"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//AndStackedLayerOperatorDescriptor"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//OrStackedLayerOperatorDescriptor"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IsAbstractUmlSetter"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//AllViewsDerivedLayer"/>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.notation b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.notation
new file mode 100644
index 00000000000..6fd99c95c60
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.notation
@@ -0,0 +1,6105 @@
+<?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/4.0.0/UML">
+ <notation:Diagram xmi:id="_mmXS0LcqEeK8_t7Rpq6ZJA" type="PapyrusUMLClassDiagram" name="overview" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_xbaJwLcqEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xbaJwrcqEeK8_t7Rpq6ZJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xbaJw7cqEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xbaJxLcqEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xbaJxbcqEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YsPE0LcrEeK8_t7Rpq6ZJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YsPE0bcrEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="0"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xbaJyLcqEeK8_t7Rpq6ZJA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJybcqEeK8_t7Rpq6ZJA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJyrcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJy7cqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJzLcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJzbcqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJzrcqEeK8_t7Rpq6ZJA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJz7cqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJ0LcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJ0bcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJ0rcqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJ07cqEeK8_t7Rpq6ZJA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJ1LcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJ1bcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJ1rcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJ17cqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <element xmi:type="uml:Class" href="notation/notation.uml#_AziHercnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJwbcqEeK8_t7Rpq6ZJA" x="30" y="-24"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yPB_ELcqEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_ErcqEeK8_t7Rpq6ZJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_E7cqEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_FLcqEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_FbcqEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_FrcqEeK8_t7Rpq6ZJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_F7cqEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yPB_GLcqEeK8_t7Rpq6ZJA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_GbcqEeK8_t7Rpq6ZJA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_GrcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_G7cqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_HLcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_HbcqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_HrcqEeK8_t7Rpq6ZJA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_H7cqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_ILcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_IbcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_IrcqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_I7cqEeK8_t7Rpq6ZJA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_JLcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_JbcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_JrcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_J7cqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_yN_dQLcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_EbcqEeK8_t7Rpq6ZJA" x="24" y="108" width="134" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eO9nANa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nAta7EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nA9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nBNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nBda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nBta7EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nB9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eO9nCNa7EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eO9nCda7EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eO9nCta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eO9nC9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eO9nDNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nDda7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eO9nDta7EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eO9nD9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eO9nENa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eO9nEda7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nEta7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ePGw8Na7EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ePGw8da7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ePGw8ta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ePGw89a7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ePGw9Na7EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nAda7EeKPiuTfpuvqHA" x="120" y="768"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gUHVoNa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVota7EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVo9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVpNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVpda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVpta7EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVp9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gUHVqNa7EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVqda7EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVqta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVq9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVrNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVrda7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVrta7EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVr9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVsNa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVsda7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVsta7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVs9a7EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVtNa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVtda7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVtta7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVt9a7EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVoda7EeKPiuTfpuvqHA" x="437" y="84" width="122" height="391"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DOnbMNjhEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbMtjhEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbM9jhEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbNNjhEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbNdjhEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbNtjhEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbN9jhEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DOnbONjhEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbOdjhEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbOtjhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbO9jhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbPNjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbPdjhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbPtjhEeKQqZMBCFd2Uw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_jpOsYNjhEeKQqZMBCFd2Uw" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_jo2R4NjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jpOsYdjhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QDJocN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_8QO3kN0kEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QDJocd0lEeKwptaAAanMDg" x="43" y="27"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QDV1sN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_H4FrgN0lEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QDV1sd0lEeKwptaAAanMDg" x="43" y="27"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jM4SYN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ZJ8N0N0lEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jM4SYd0lEeKwptaAAanMDg" x="56" y="77"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jM78wN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ZdgqEN0lEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jM78wd0lEeKwptaAAanMDg" x="56" y="77"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbP9jhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbQNjhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbQdjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbQtjhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbQ9jhEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbRNjhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbRdjhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbRtjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbR9jhEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_DN8s0NjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbMdjhEeKQqZMBCFd2Uw" x="168" y="210" width="166" height="199"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WHUKENjiEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKEtjiEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKE9jiEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKFNjiEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKFdjiEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKFtjiEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKF9jiEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WHUKGNjiEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKGdjiEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKGtjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKG9jiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKHNjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKHdjiEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKHtjiEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKH9jiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKINjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKIdjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKItjiEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKI9jiEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKJNjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKJdjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKJtjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKJ9jiEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKEdjiEeKQqZMBCFd2Uw" x="660" y="84"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Y0q5cNjoEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5ctjoEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5c9joEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5dNjoEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5ddjoEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5dtjoEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5d9joEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y0q5eNjoEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y0q5edjoEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y0q5etjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y0q5e9joEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0q5fNjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5fdjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y0q5ftjoEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y0q5f9joEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y0q5gNjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0q5gdjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5gtjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y0xAENjoEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y0xAEdjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y0xAEtjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0xAE9joEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0xAFNjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5cdjoEeKQqZMBCFd2Uw" x="12" y="216" height="67"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_8O26INjoEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26ItjoEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26I9joEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26JNjoEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26JdjoEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26JtjoEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26J9joEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8O26KNjoEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8O26KdjoEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_8O26KtjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8O26K9joEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26LNjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26LdjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8O26LtjoEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_8O26L9joEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8O26MNjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26MdjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26MtjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8O26M9joEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_8O26NNjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8O26NdjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26NtjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26N9joEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_8OefoNjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26IdjoEeKQqZMBCFd2Uw" x="312" y="462" width="120" height="67"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AToXINjpEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXItjpEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXI9jpEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXJNjpEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXJdjpEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXJtjpEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXJ9jpEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AToXKNjpEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AToXKdjpEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AToXKtjpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AToXK9jpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXLNjpEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXLdjpEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AToXLtjpEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AToXL9jpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AToXMNjpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXMdjpEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXMtjpEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AToXM9jpEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AToXNNjpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AToXNdjpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXNtjpEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXN9jpEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_uMYd4NjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXIdjpEeKQqZMBCFd2Uw" x="12" y="462" height="67"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_di3-ENkhEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-EtkhEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-E9khEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-FNkhEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-FdkhEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-FtkhEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-F9khEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_di3-GNkhEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_di3-GdkhEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_di3-GtkhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_di3-G9khEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_di3-HNkhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-HdkhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_di3-HtkhEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_di3-H9khEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_di3-INkhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_di3-IdkhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-ItkhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_di-EsNkhEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_di-EsdkhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_di-EstkhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_di-Es9khEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di-EtNkhEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-EdkhEeKQqZMBCFd2Uw" x="660" y="384"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zYYY0NqBEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefcNqBEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefcdqBEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefctqBEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefc9qBEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefdNqBEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefddqBEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zYfGgNqBEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGgdqBEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGgtqBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGg9qBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGhNqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGhdqBEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGhtqBEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGh9qBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGiNqBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGidqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGitqBEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGi9qBEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGjNqBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGjdqBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGjtqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGj9qBEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_zYGE8NqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYYY0dqBEeKQqZMBCFd2Uw" x="48" y="588"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_33RakNt0EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33Raktt0EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Rak9t0EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33RalNt0EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Raldt0EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33Raltt0EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Ral9t0EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_33RamNt0EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_33Ramdt0EeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_33Ramtt0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_33Ram9t0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_33RanNt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Randt0EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_33Rantt0EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_33Ran9t0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_33RaoNt0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_33Raodt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Raott0EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_33Rao9t0EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_33RapNt0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_33Rapdt0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_33Raptt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Rap9t0EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Rakdt0EeKQqZMBCFd2Uw" x="174" y="-12" width="217" height="97"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IPOrANt2EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrAtt2EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrA9t2EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrBNt2EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrBdt2EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrBtt2EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrB9t2EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IPOrCNt2EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrCdt2EeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrCtt2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrC9t2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrDNt2EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrDdt2EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrDtt2EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrD9t2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrENt2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrEdt2EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrEtt2EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrE9t2EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrFNt2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrFdt2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrFtt2EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrF9t2EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_IOwJ4Nt2EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrAdt2EeKQqZMBCFd2Uw" x="312" y="588" width="193"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_q9LiYO3uEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpAO3uEeKwLp35IbAIig" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpAe3uEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpAu3uEeKwLp35IbAIig" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpA-3uEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpBO3uEeKwLp35IbAIig" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpBe3uEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q9RpBu3uEeKwLp35IbAIig" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpB-3uEeKwLp35IbAIig" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpCO3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpCe3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpCu3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpC-3uEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpDO3uEeKwLp35IbAIig" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpDe3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpDu3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpD-3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpEO3uEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpEe3uEeKwLp35IbAIig" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpEu3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpE-3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpFO3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpFe3uEeKwLp35IbAIig"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_q85OgO3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9LiYe3uEeKwLp35IbAIig" x="316" y="760"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-jCeEAw_EeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeEgw_EeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeEww_EeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeFAw_EeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeFQw_EeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeFgw_EeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeFww_EeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-jCeGAw_EeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeGQw_EeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeGgw_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeGww_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeHAw_EeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeHQw_EeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeHgw_EeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeHww_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeIAw_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeIQw_EeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeIgw_EeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeIww_EeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeJAw_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeJQw_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeJgw_EeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeJww_EeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_T5we4AkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeEQw_EeOjX-JbGFEH7w" x="312" y="894" width="229"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_mmXS0bcqEeK8_t7Rpq6ZJA"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_0PIOkLcqEeK8_t7Rpq6ZJA" type="4002" source="_yPB_ELcqEeK8_t7Rpq6ZJA" target="_xbaJwLcqEeK8_t7Rpq6ZJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0PIOk7cqEeK8_t7Rpq6ZJA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0PIOlLcqEeK8_t7Rpq6ZJA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0PIOkbcqEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_0NyKwLcqEeK8_t7Rpq6ZJA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0PIOkrcqEeK8_t7Rpq6ZJA" points="[-1, -6, 16, 197]$[-15, -195, 2, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0REIQLcqEeK8_t7Rpq6ZJA" id="(0.38,0.06)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0REIQbcqEeK8_t7Rpq6ZJA" id="(0.47,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jWjy8Na7EeKPiuTfpuvqHA" type="4001" source="_yPB_ELcqEeK8_t7Rpq6ZJA" target="_gUHVoNa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy89a7EeKPiuTfpuvqHA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy9Na7EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy9da7EeKPiuTfpuvqHA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy9ta7EeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy99a7EeKPiuTfpuvqHA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy-Na7EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy-da7EeKPiuTfpuvqHA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy-ta7EeKPiuTfpuvqHA" x="-25" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy-9a7EeKPiuTfpuvqHA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy_Na7EeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy_da7EeKPiuTfpuvqHA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy_ta7EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_jWjy8da7EeKPiuTfpuvqHA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_jWQ4ANa7EeKPiuTfpuvqHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jWjy8ta7EeKPiuTfpuvqHA" points="[16, 0, -128, 0]$[133, -1, -11, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jW2t4Na7EeKPiuTfpuvqHA" id="(0.8620689655172413,0.38)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jW2t4da7EeKPiuTfpuvqHA" id="(0.08,0.11253196930946291)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_akk1ANjhEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_gUHVoNa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1A9jhEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1BNjhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1BdjhEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1BtjhEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1B9jhEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1CNjhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1CdjhEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1CtjhEeKQqZMBCFd2Uw" x="-25" y="22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1C9jhEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1DNjhEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1DdjhEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1DtjhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_akk1AdjhEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_akGT4NjhEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_akk1AtjhEeKQqZMBCFd2Uw" points="[7, 15, -46, -102]$[50, 115, -3, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_akxCQNjhEeKQqZMBCFd2Uw" id="(0.9759036144578314,0.15577889447236182)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_akxCQdjhEeKQqZMBCFd2Uw" id="(0.11,0.4194373401534527)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bwi0sNjoEeKQqZMBCFd2Uw" type="4002" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_Y0q5cNjoEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bwi0s9joEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bwi0tNjoEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bwi0sdjoEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_bwKaMNjoEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bwi0stjoEeKQqZMBCFd2Uw" points="[2, -5, 0, 49]$[-1, -46, -3, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bwo7UNjoEeKQqZMBCFd2Uw" id="(0.42771084337349397,0.04807692307692308)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bwo7UdjoEeKQqZMBCFd2Uw" id="(0.43,0.8805970149253731)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_DY7UINjpEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_AToXINjpEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DY7UI9jpEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UJNjpEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DY7UJdjpEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UJtjpEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DY7UJ9jpEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UKNjpEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DZBawNjpEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBawdjpEeKQqZMBCFd2Uw" x="25" y="59"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DZBawtjpEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBaw9jpEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DZBaxNjpEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBaxdjpEeKQqZMBCFd2Uw" x="-20" y="-19"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_DY7UIdjpEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_DYi5oNjpEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DY7UItjpEeKQqZMBCFd2Uw" points="[-6, 7, 55, -70]$[-61, 77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZHhYNjpEeKQqZMBCFd2Uw" id="(0.19879518072289157,0.9326923076923077)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZHhYdjpEeKQqZMBCFd2Uw" id="(0.5483870967741935,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_EE7egNjpEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_8O26INjoEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EE7eg9jpEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EE7ehNjpEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EE7ehdjpEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EE7ehtjpEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EE7eh9jpEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlINjpEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EFBlIdjpEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlItjpEeKQqZMBCFd2Uw" x="-35" y="33"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EFBlI9jpEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlJNjpEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EFBlJdjpEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlJtjpEeKQqZMBCFd2Uw" x="16" y="-48"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_EE7egdjpEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_EEjEANjpEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EE7egtjpEeKQqZMBCFd2Uw" points="[3, 8, -32, -76]$[36, 78, 1, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EFHrwNjpEeKQqZMBCFd2Uw" id="(0.6867469879518072,0.9230769230769231)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EFHrwdjpEeKQqZMBCFd2Uw" id="(0.5416666666666666,0.08955223880597014)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_hRFVMNkhEeKQqZMBCFd2Uw" type="4001" source="_gUHVoNa7EeKPiuTfpuvqHA" target="_di3-ENkhEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVM9khEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVNNkhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVNdkhEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVNtkhEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVN9khEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVONkhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVOdkhEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVOtkhEeKQqZMBCFd2Uw" x="-41" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVO9khEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVPNkhEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVPdkhEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVPtkhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_hRFVMdkhEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_hQam0NkhEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hRFVMtkhEeKQqZMBCFd2Uw" points="[9, -1, -134, 0]$[132, -6, -11, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hRLb0NkhEeKQqZMBCFd2Uw" id="(0.91,0.8593350383631714)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hRLb0dkhEeKQqZMBCFd2Uw" id="(0.11,0.35)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5sUcENqBEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_zYYY0NqBEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcE9qBEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcFNqBEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcFdqBEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcFtqBEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcF9qBEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcGNqBEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcGdqBEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcGtqBEeKQqZMBCFd2Uw" x="9" y="104"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcG9qBEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5saisNqBEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5saisdqBEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5saistqBEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5sUcEdqBEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_5r8BkNqBEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5sUcEtqBEeKQqZMBCFd2Uw" points="[0, 13, 28, -195]$[0, 168, 28, -40]$[-17, 192, 11, -16]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5sgpUNqBEeKQqZMBCFd2Uw" id="(0.27710843373493976,0.9346733668341709)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5sgpUdqBEeKQqZMBCFd2Uw" id="(0.8734177215189873,0.16)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_T0VGwNqCEeKQqZMBCFd2Uw" type="4001" source="_zYYY0NqBEeKQqZMBCFd2Uw" target="_eO9nANa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGw9qCEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGxNqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGxdqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGxtqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGx9qCEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGyNqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGydqCEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGytqCEeKQqZMBCFd2Uw" x="3" y="78"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGy9qCEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGzNqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGzdqCEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGztqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_T0VGwdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_Tz2loNqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_T0VGwtqCEeKQqZMBCFd2Uw" points="[1, 9, 0, -64]$[-1, 65, -2, -8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0bNYNqCEeKQqZMBCFd2Uw" id="(0.5063291139240507,0.91)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0bNYdqCEeKQqZMBCFd2Uw" id="(0.42857142857142855,0.08)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__sH28Nt0EeKQqZMBCFd2Uw" type="4001" source="_33RakNt0EeKQqZMBCFd2Uw" target="_DOnbMNjhEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH289t0EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH29Nt0EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH29dt0EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH29tt0EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH299t0EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2-Nt0EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH2-dt0EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2-tt0EeKQqZMBCFd2Uw" x="-1" y="58"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH2-9t0EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2_Nt0EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH2_dt0EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2_tt0EeKQqZMBCFd2Uw" x="-1" y="-35"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__sH28dt0EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#__rpV0Nt0EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__sH28tt0EeKQqZMBCFd2Uw" points="[-9, 4, 0, -131]$[-9, 129, 0, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__sN9kNt0EeKQqZMBCFd2Uw" id="(0.4147465437788018,0.9587628865979382)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__sN9kdt0EeKQqZMBCFd2Uw" id="(0.5240963855421686,0.057692307692307696)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_wRtFcNt2EeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_IPOrANt2EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFc9t2EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFdNt2EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFddt2EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFdtt2EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFd9t2EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFeNt2EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFedt2EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFett2EeKQqZMBCFd2Uw" x="22" y="-39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFe9t2EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFfNt2EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFfdt2EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFftt2EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_wRtFcdt2EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_wROkUNt2EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wRtFctt2EeKQqZMBCFd2Uw" points="[17, 96, -39, -213]$[46, 304, -10, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wRzMENt2EeKQqZMBCFd2Uw" id="(0.40963855421686746,0.07692307692307693)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wRzMEdt2EeKQqZMBCFd2Uw" id="(0.05181347150259067,0.11)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3GnZYO3uEeKwLp35IbAIig" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_q9LiYO3uEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZY-3uEeKwLp35IbAIig" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZZO3uEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZZe3uEeKwLp35IbAIig" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZZu3uEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZZ-3uEeKwLp35IbAIig" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZaO3uEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZae3uEeKwLp35IbAIig" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZau3uEeKwLp35IbAIig" x="72" y="-98"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZa-3uEeKwLp35IbAIig" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZbO3uEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZbe3uEeKwLp35IbAIig" visible="false" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZbu3uEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3GnZYe3uEeKwLp35IbAIig" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_3GHqIO3uEeKwLp35IbAIig"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3GnZYu3uEeKwLp35IbAIig" points="[3, 22, -77, -351]$[47, 321, -33, -52]$[80, 373, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3GzmoO3uEeKwLp35IbAIig" id="(0.4759036144578313,0.8894472361809045)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Gzmoe3uEeKwLp35IbAIig" id="(0.0738255033557047,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FETysAxAEeOjX-JbGFEH7w" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_-jCeEAw_EeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVA0AxAEeOjX-JbGFEH7w" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVA0QxAEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVn4AxAEeOjX-JbGFEH7w" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn4QxAEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVn4gxAEeOjX-JbGFEH7w" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn4wxAEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVn5AxAEeOjX-JbGFEH7w" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn5QxAEeOjX-JbGFEH7w" x="70" y="-137"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVn5gxAEeOjX-JbGFEH7w" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn5wxAEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEWO8AxAEeOjX-JbGFEH7w" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEWO8QxAEeOjX-JbGFEH7w" x="52" y="29"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_FETysQxAEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_FDpEUAxAEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FETysgxAEeOjX-JbGFEH7w" points="[0, 5, -99, -495]$[19, 112, -80, -388]$[67, 472, -32, -28]$[87, 490, -12, -10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FEh1IAxAEeOjX-JbGFEH7w" id="(0.35542168674698793,0.9748743718592965)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FEh1IQxAEeOjX-JbGFEH7w" id="(0.06422018348623854,0.1)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_y-BQANa7EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="LayersExpression" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_zpKewNa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKewta7EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKew9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKexNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKexda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKexta7EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKex9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zpKeyNa7EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zpKeyda7EeKPiuTfpuvqHA" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_hEYzQNjwEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_ctvjINjwEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hEYzQdjwEeKQqZMBCFd2Uw" x="58" y="16"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hEe54NjwEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_ct7wYNjwEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hEe54djwEeKQqZMBCFd2Uw" x="58" y="16"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zpKeyta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zpKey9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKezNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKezda7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zpKezta7EeKPiuTfpuvqHA" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_U4pyQHl6EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_9n-f4HbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U4pyQXl6EeOlpfB_tZS-QA" x="50" y="17"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VuiRYHl6EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_rQGJoHbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VuiRYXl6EeOlpfB_tZS-QA" x="71" y="17"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zpKez9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zpKe0Na7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKe0da7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKe0ta7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zpKe09a7EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zpKe1Na7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zpKe1da7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKe1ta7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKe19a7EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKewda7EeKPiuTfpuvqHA" x="120" y="108" width="242" height="133"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_52F7ENa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7Eta7EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7E9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7FNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7Fda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7Fta7EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7F9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_52F7GNa7EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_52F7Gda7EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_52F7Gta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_52F7G9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7HNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Hda7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_52F7Hta7EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_52F7H9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_52F7INa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7Ida7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Ita7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_52F7I9a7EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_52F7JNa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_52F7Jda7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7Jta7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7J9a7EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Eda7EeKPiuTfpuvqHA" x="696" y="378" width="115" height="193"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AjwF4Na8EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF4ta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF49a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF5Na8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF5da8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF5ta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF59a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AjwF6Na8EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF6da8EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF6ta8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF69a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF7Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF7da8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF7ta8EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF79a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF8Na8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF8da8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF8ta8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF89a8EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF9Na8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF9da8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF9ta8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF99a8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF4da8EeKPiuTfpuvqHA" x="963" y="379"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T7HNENbFEeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNEtbFEeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNE9bFEeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNFNbFEeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNFdbFEeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNFtbFEeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNF9bFEeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T7HNGNbFEeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7HNGdbFEeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7HNGtbFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T7HNG9bFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T7HNHNbFEeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7HNHdbFEeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7HNHtbFEeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7HNH9bFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T7QXANbFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T7QXAdbFEeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7QXAtbFEeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7QXA9bFEeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7QXBNbFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T7QXBdbFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T7QXBtbFEeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7QXB9bFEeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7HNEdbFEeKPiuTfpuvqHA" x="960" y="258"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vMekkNjKEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrMNjKEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrMdjKEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrMtjKEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrM9jKEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrNNjKEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrNdjKEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vMkrNtjKEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrN9jKEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_1CU9oNjKEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_1B8jINjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1CU9odjKEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4gTgYNjKEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_4f0_QNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4gTgYdjKEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrONjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrOdjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrOtjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrO9jKEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrPNjKEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrPdjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrPtjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrP9jKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrQNjKEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrQdjKEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrQtjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrQ9jKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrRNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrRdjKEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_vMMQsNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMekkdjKEeKgkM6XJF9t4A" x="960" y="510" width="203"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9IsT4NjiEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT4tjiEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IsT49jiEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT5NjiEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IsT5djiEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT5tjiEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IyagNjiEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9IyagdjiEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9IyagtjiEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_R8Lv8NjuEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_AWx_gNjuEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R8Lv8djuEeKQqZMBCFd2Uw" x="47" y="9"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_R8Lv8tjuEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_AW-MwNjuEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R8Lv89juEeKQqZMBCFd2Uw" x="47" y="9"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mCypIAxEEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B5cxgAxGEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkAxGEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkQxGEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EAttribute"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkgxGEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkwxGEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYlAxGEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="layers.uml#_mCUIAAxEEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mCypIQxEEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qa7HAAxEEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_qaozIAxEEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qa7HAQxEEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_48FIsGQ7EeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_xcbgQGQ7EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_48FIsWQ7EeOlpfB_tZS-QA" x="153" y="77"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9Iyag9jiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9IyahNjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9IyahdjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IyahtjiEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9Iyah9jiEeKQqZMBCFd2Uw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_VdqgMO7HEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVUO7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEO7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_VdSFsO7HEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VdqgMe7HEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fOx_gO7IEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVUu7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEe7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_xfz8UO7HEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fOx_ge7IEeK0p4PkXjd-_Q" x="93" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fO4GIO7IEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVVO7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEu7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_x2PfUO7HEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fO4GIe7IEeK0p4PkXjd-_Q" x="93" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Ps2L4WUaEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_Ps2L4GUaEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ps2L4mUaEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kzSSwWUdEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_kzSSwGUdEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kzSSwmUdEeOlpfB_tZS-QA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9IyaiNjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9IyaidjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9IyaitjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Iyai9jiEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9IyajNjiEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9IyajdjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9IyajtjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9Iyaj9jiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IyakNjiEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_9IaAANjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IsT4djiEeKQqZMBCFd2Uw" x="468" y="72" width="475" height="250"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Hoi98NjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi98tjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi989jjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi99NjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi99djjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi99tjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi999jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Hoi9-NjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi9-djjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi9-tjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi9-9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi9_NjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi9_djjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi9_tjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi9_9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi-ANjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi-AdjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi-AtjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi-A9jjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi-BNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi-BdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi-BtjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi-B9jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_HoKjcNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi98djjEeKQqZMBCFd2Uw" x="360" y="360" width="115"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WunlMNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr0NjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr0djjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr0tjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr09jjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr1NjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr1djjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wutr1tjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr19jjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr2NjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr2djjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr2tjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr29jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr3NjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr3djjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr3tjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr39jjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr4NjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr4djjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr4tjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr49jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr5NjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr5djjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_WuVRUNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WunlMdjjEeKQqZMBCFd2Uw" x="456" y="534" width="157"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gqpJcNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQENjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQEdjjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQEtjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQE9jjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQFNjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQFdjjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gqvQFtjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQF9jjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQGNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQGdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQGtjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQG9jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQHNjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQHdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQHtjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQH9jjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQINjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQIdjjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQItjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQI9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQJNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQJdjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_gqW1kNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqpJcdjjEeKQqZMBCFd2Uw" x="582" y="672"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wpUMoNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMotjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMo9jjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMpNjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMpdjjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMptjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMp9jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wpUMqNjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMqdjjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMqtjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMq9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMrNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMrdjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMrtjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMr9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMsNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMsdjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMstjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMs9jjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMtNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMtdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMttjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMt9jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_wpB4wNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUModjjEeKQqZMBCFd2Uw" x="372" y="672" width="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1xfAUNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xfnYNjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xfnYdjjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xgOcNjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xgOcdjjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xgOctjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xgOc9jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1xgOdNjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOddjjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOdtjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOd9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOeNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOedjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOetjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOe9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOfNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOfdjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOftjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOf9jjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOgNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOgdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOgtjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOg9jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_1xJCENjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xfAUdjjEeKQqZMBCFd2Uw" x="222" y="534" width="163"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zT_qYNt5EeKwptaAAanMDg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qYtt5EeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qY9t5EeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qZNt5EeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qZdt5EeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qZtt5EeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qZ9t5EeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zT_qaNt5EeKwptaAAanMDg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qadt5EeKwptaAAanMDg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qatt5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qa9t5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qbNt5EeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qbdt5EeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qbtt5EeKwptaAAanMDg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qb9t5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qcNt5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qcdt5EeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qctt5EeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qc9t5EeKwptaAAanMDg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qdNt5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qddt5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qdtt5EeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qd9t5EeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qYdt5EeKwptaAAanMDg" x="612" y="-18" height="45"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_z-jdcOHTEeKCZbxNW-U3VQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jdcuHTEeKCZbxNW-U3VQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jdc-HTEeKCZbxNW-U3VQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jddOHTEeKCZbxNW-U3VQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jddeHTEeKCZbxNW-U3VQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jdduHTEeKCZbxNW-U3VQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jdd-HTEeKCZbxNW-U3VQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z-jdeOHTEeKCZbxNW-U3VQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdeeHTEeKCZbxNW-U3VQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_BnajsBZ1EeOZwp016gnCFQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_Bm93wBZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BnajsRZ1EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FqR8MBZ1EeOZwp016gnCFQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_Fp_BQBZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FqR8MRZ1EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NA_bwFCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_NAa0AFCkEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NA_bwVCkEeO_9LQ4jZWm3w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_X_qIwVCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_X_qIwFCkEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_qIwlCkEeO_9LQ4jZWm3w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uJr68VCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_uJr68FCkEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uJr68lCkEeO_9LQ4jZWm3w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_y220sVCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_y220sFCkEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y220slCkEeO_9LQ4jZWm3w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_sPbYQVClEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_sPbYQFClEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sPbYQlClEeO_9LQ4jZWm3w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdeuHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z-jde-HTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdfOHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdfeHTEeKCZbxNW-U3VQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdfuHTEeKCZbxNW-U3VQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_kKAqgBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_kI0XsBZ0EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kKAqgRZ0EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lphVcBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_lpOagBZ0EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lphVcRZ0EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pKeTsBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_pKKxsBZ0EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pKeTsRZ0EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KMaIAFVJEeOah7Z-UYdQAA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_EnH6gFVJEeOah7Z-UYdQAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KMaIAVVJEeOah7Z-UYdQAA" x="75" y="65"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lLHxMFVJEeOah7Z-UYdQAA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_Y5m8QFVJEeOah7Z-UYdQAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lLHxMVVJEeOah7Z-UYdQAA" x="99" y="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KnlysFVKEeOah7Z-UYdQAA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_m3jd0FVJEeOah7Z-UYdQAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KnlysVVKEeOah7Z-UYdQAA" x="112" y="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZojQcFVKEeOah7Z-UYdQAA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_Lwc4MFVKEeOah7Z-UYdQAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZojQcVVKEeOah7Z-UYdQAA" x="23" y="122"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdf-HTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z-jdgOHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdgeHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdguHTEeKCZbxNW-U3VQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdg-HTEeKCZbxNW-U3VQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdhOHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z-jdheHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdhuHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdh-HTEeKCZbxNW-U3VQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_z9aN8OHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdceHTEeKCZbxNW-U3VQ" x="900" y="696"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__1eoIOHTEeKCZbxNW-U3VQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoIuHTEeKCZbxNW-U3VQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoI-HTEeKCZbxNW-U3VQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoJOHTEeKCZbxNW-U3VQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoJeHTEeKCZbxNW-U3VQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoJuHTEeKCZbxNW-U3VQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoJ-HTEeKCZbxNW-U3VQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__1eoKOHTEeKCZbxNW-U3VQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__1eoKeHTEeKCZbxNW-U3VQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__1eoKuHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__1eoK-HTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoLOHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoLeHTEeKCZbxNW-U3VQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__1eoLuHTEeKCZbxNW-U3VQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__1eoL-HTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__1eoMOHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoMeHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoMuHTEeKCZbxNW-U3VQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__1eoM-HTEeKCZbxNW-U3VQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__1eoNOHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__1eoNeHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoNuHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoN-HTEeKCZbxNW-U3VQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#__1GNoOHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoIeHTEeKCZbxNW-U3VQ" x="732" y="696"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7c7RQFVHEeOah7Z-UYdQAA" type="2006" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7c7RQlVHEeOah7Z-UYdQAA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7c7RQ1VHEeOah7Z-UYdQAA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7c7RRFVHEeOah7Z-UYdQAA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7c7RRVVHEeOah7Z-UYdQAA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7c7RRlVHEeOah7Z-UYdQAA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7c7RR1VHEeOah7Z-UYdQAA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7c7RSFVHEeOah7Z-UYdQAA" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7c7RSVVHEeOah7Z-UYdQAA" type="7015">
+ <children xmi:type="notation:Shape" xmi:id="_3vpKYFVLEeOah7Z-UYdQAA" type="3017" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="layers.uml#_ItnrQFVIEeOah7Z-UYdQAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3vpKYVVLEeOah7Z-UYdQAA" x="49" y="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4RZzoFVLEeOah7Z-UYdQAA" type="3017" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="layers.uml#__fkAQFVHEeOah7Z-UYdQAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4RZzoVVLEeOah7Z-UYdQAA" x="26" y="28"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7c7RSlVHEeOah7Z-UYdQAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7c7RS1VHEeOah7Z-UYdQAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7c7RTFVHEeOah7Z-UYdQAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7c7RTVVHEeOah7Z-UYdQAA"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="layers.uml#_7cWpgFVHEeOah7Z-UYdQAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7c7RQVVHEeOah7Z-UYdQAA" x="496" y="820"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ft-hUWtpEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ft-hU2tpEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ft-hVGtpEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fuEn8GtpEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fuEn8WtpEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fuEn8mtpEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fuEn82tpEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fuEn9GtpEeOlpfB_tZS-QA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fuEn9WtpEeOlpfB_tZS-QA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fuEn9mtpEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fuEn92tpEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fuEn-GtpEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fuEn-WtpEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fuEn-mtpEeOlpfB_tZS-QA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fuEn-2tpEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fuEn_GtpEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fuEn_WtpEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fuEn_mtpEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fuEn_2tpEeOlpfB_tZS-QA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fuEoAGtpEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fuEoAWtpEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fuEoAmtpEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fuEoA2tpEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ft-hUGtpEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ft-hUmtpEeOlpfB_tZS-QA" x="732" y="822"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_RopgYXpGEeOlpfB_tZS-QA" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RopgY3pGEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RopgZHpGEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RopgZXpGEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RopgZnpGEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RopgZ3pGEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RopgaHpGEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RopgaXpGEeOlpfB_tZS-QA" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RopganpGEeOlpfB_tZS-QA" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ropga3pGEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RopgbHpGEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RopgbXpGEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RopgbnpGEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ropgb3pGEeOlpfB_tZS-QA" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_jHtYQXpGEeOlpfB_tZS-QA" type="3007" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u3kRoHpGEeOlpfB_tZS-QA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vhh0oHpGEeOlpfB_tZS-QA" key="CustomAppearance_MaskValue" value="4872"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_jHtYQHpGEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jHtYQnpGEeOlpfB_tZS-QA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RopgcHpGEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RopgcXpGEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RopgcnpGEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ropgc3pGEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RopgdHpGEeOlpfB_tZS-QA" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RopgdXpGEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RopgdnpGEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ropgd3pGEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RopgeHpGEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Interface" href="layers.uml#_RopgYHpGEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RopgYnpGEeOlpfB_tZS-QA" x="78" y="342" width="175" height="109"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_y-BQAda7EeKPiuTfpuvqHA"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_5ZBIENa8EeKPiuTfpuvqHA" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_AjwF4Na8EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSANa8EeKPiuTfpuvqHA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSAda8EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSAta8EeKPiuTfpuvqHA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSA9a8EeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSBNa8EeKPiuTfpuvqHA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSBda8EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSBta8EeKPiuTfpuvqHA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSB9a8EeKPiuTfpuvqHA" x="-35" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSCNa8EeKPiuTfpuvqHA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSCda8EeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSCta8EeKPiuTfpuvqHA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSC9a8EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5ZBIEda8EeKPiuTfpuvqHA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_5YuNINa8EeKPiuTfpuvqHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5ZBIEta8EeKPiuTfpuvqHA" points="[7, 4, -241, 0]$[240, 4, -8, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ZUDANa8EeKPiuTfpuvqHA" id="(0.95,0.3941908713692946)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ZUDAda8EeKPiuTfpuvqHA" id="(0.03,0.73)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_cH3WoNbGEeKPiuTfpuvqHA" type="4001" source="_zpKewNa7EeKPiuTfpuvqHA" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wo9bGEeKPiuTfpuvqHA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WpNbGEeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3WpdbGEeKPiuTfpuvqHA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WptbGEeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wp9bGEeKPiuTfpuvqHA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WqNbGEeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3WqdbGEeKPiuTfpuvqHA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WqtbGEeKPiuTfpuvqHA" x="-16" y="9"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wq9bGEeKPiuTfpuvqHA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WrNbGEeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3WrdbGEeKPiuTfpuvqHA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WrtbGEeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_cH3WodbGEeKPiuTfpuvqHA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_cHkbsNbGEeKPiuTfpuvqHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cH3WotbGEeKPiuTfpuvqHA" points="[5, -6, -94, 0]$[97, -7, -2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cIBHoNbGEeKPiuTfpuvqHA" id="(0.9941176470588236,0.3533834586466165)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cIBHodbGEeKPiuTfpuvqHA" id="(0.022900763358778626,0.31756756756756754)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_A2AAANjLEeKgkM6XJF9t4A" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_vMekkNjKEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2AAA9jLEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2AABNjLEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2AABdjLEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2AABtjLEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GGoNjLEeKgkM6XJF9t4A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGodjLEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GGotjLEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGo9jLEeKgkM6XJF9t4A" x="-52" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GGpNjLEeKgkM6XJF9t4A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGpdjLEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GGptjLEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGp9jLEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_A2AAAdjLEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_A1nlgNjLEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_A2AAAtjLEeKgkM6XJF9t4A" points="[4, 2, -221, 0]$[222, 1, -3, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2MNQNjLEeKgkM6XJF9t4A" id="(0.9304347826086956,0.8963730569948186)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2MNQdjLEeKgkM6XJF9t4A" id="(0.014778325123152709,0.3870967741935484)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__u7_YNjMEeKgkM6XJF9t4A" type="4002" source="_52F7ENa7EeKPiuTfpuvqHA" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="__vCGANjMEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__vCGAdjMEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__u7_YdjMEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#__ujk4NjMEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__u7_YtjMEeKgkM6XJF9t4A" points="[25, -12, -69, 32]$[88, -42, -6, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__vCGAtjMEeKgkM6XJF9t4A" id="(0.62,0.053811659192825115)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__vCGA9jMEeKgkM6XJF9t4A" id="(0.08396946564885496,0.59)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LBg6UNjiEeKQqZMBCFd2Uw" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_T7HNENbFEeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6U9jiEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6VNjiEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6VdjiEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6VtjiEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6V9jiEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6WNjiEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6WdjiEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6WtjiEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6W9jiEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6XNjiEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6XdjiEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6XtjiEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LBg6UdjiEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_LBIf0NjiEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LBg6UtjiEeKQqZMBCFd2Uw" points="[4, -1, -236, 26]$[234, -23, -6, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBtHkNjiEeKQqZMBCFd2Uw" id="(0.96,0.05394190871369295)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBtHkdjiEeKQqZMBCFd2Uw" id="(0.05714285714285714,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OJgwkNjjEeKQqZMBCFd2Uw" type="4002" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OJgwk9jjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OJgwlNjjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OJgwkdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_OJCPcNjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OJgwktjjEeKQqZMBCFd2Uw" points="[2, -2, -91, 72]$[90, -64, -3, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJm3MNjjEeKQqZMBCFd2Uw" id="(0.6,0.02)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJm3MdjjEeKQqZMBCFd2Uw" id="(0.4122137404580153,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zMPcYNjjEeKQqZMBCFd2Uw" type="4002" source="_wpUMoNjjEeKQqZMBCFd2Uw" target="_WunlMNjjEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zMPcY9jjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zMPcZNjjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_zMPcYdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_zL9IgNjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zMPcYtjjEeKQqZMBCFd2Uw" points="[12, -9, -58, 43]$[67, -47, -3, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zMVjANjjEeKQqZMBCFd2Uw" id="(0.4319526627218935,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zMVjAdjjEeKQqZMBCFd2Uw" id="(0.37579617834394907,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zpCtINjjEeKQqZMBCFd2Uw" type="4002" source="_gqpJcNjjEeKQqZMBCFd2Uw" target="_WunlMNjjEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zpIzwNjjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zpIzwdjjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_zpCtIdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_zoqSoNjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zpCtItjjEeKQqZMBCFd2Uw" points="[-16, -13, 53, 45]$[-65, -51, 4, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpIzwtjjEeKQqZMBCFd2Uw" id="(0.4262295081967213,0.13)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpIzw9jjEeKQqZMBCFd2Uw" id="(0.6942675159235668,0.93)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0mKcsNjjEeKQqZMBCFd2Uw" type="4002" source="_WunlMNjjEeKQqZMBCFd2Uw" target="_Hoi98NjjEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0mLq0NjjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0mLq0djjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0mKcsdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_0lwNANjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0mKcstjjEeKQqZMBCFd2Uw" points="[-19, -17, 88, 82]$[-105, -91, 2, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0mOuINjjEeKQqZMBCFd2Uw" id="(0.5031847133757962,0.17)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0mPVMNjjEeKQqZMBCFd2Uw" id="(0.591304347826087,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4cX5QNjjEeKQqZMBCFd2Uw" type="4002" source="_1xfAUNjjEeKQqZMBCFd2Uw" target="_Hoi98NjjEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4cX5Q9jjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4cX5RNjjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4cX5QdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_4b_ewNjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4cX5QtjjEeKQqZMBCFd2Uw" points="[0, 0, -98, 79]$[96, -74, -2, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4cd_4NjjEeKQqZMBCFd2Uw" id="(0.49693251533742333,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4cd_4djjEeKQqZMBCFd2Uw" id="(0.3565217391304348,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_endM4NjnEeKQqZMBCFd2Uw" type="4001" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM49jnEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM5NjnEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM5djnEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM5tjnEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM59jnEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM6NjnEeKQqZMBCFd2Uw" x="-34" y="-41"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM6djnEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM6tjnEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM69jnEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM7NjnEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM7djnEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM7tjnEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_endM4djnEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_em-rwNjnEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_endM4tjnEeKQqZMBCFd2Uw" points="[0, -4, -89, 78]$[0, -76, -89, 6]$[87, -76, -2, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_enjTgNjnEeKQqZMBCFd2Uw" id="(0.1826086956521739,0.04)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_enjTgdjnEeKQqZMBCFd2Uw" id="(0.015267175572519083,0.84)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_18hy4Nt5EeKwptaAAanMDg" type="4002" source="_9IsT4NjiEeKQqZMBCFd2Uw" target="_zT_qYNt5EeKwptaAAanMDg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_18hy49t5EeKwptaAAanMDg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_18hy5Nt5EeKwptaAAanMDg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_18hy4dt5EeKwptaAAanMDg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_18JYYNt5EeKwptaAAanMDg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_18hy4tt5EeKwptaAAanMDg" points="[-3, -5, 0, 82]$[-11, -80, -8, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_18n5gNt5EeKwptaAAanMDg" id="(0.48210526315789476,0.004672897196261682)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_18n5gdt5EeKwptaAAanMDg" id="(0.41624365482233505,0.8444444444444444)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_R9IxEOHUEeKCZbxNW-U3VQ" type="4002" source="_z-jdcOHTEeKCZbxNW-U3VQ" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_R9IxE-HUEeKCZbxNW-U3VQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R9IxFOHUEeKCZbxNW-U3VQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_R9IxEeHUEeKCZbxNW-U3VQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_R8qP8OHUEeKCZbxNW-U3VQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_R9IxEuHUEeKCZbxNW-U3VQ" points="[-5, -9, 106, 209]$[-109, -206, 2, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R9O3sOHUEeKCZbxNW-U3VQ" id="(0.25,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R9O3seHUEeKCZbxNW-U3VQ" id="(0.58,0.8956521739130435)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_anKh8OHUEeKCZbxNW-U3VQ" type="4002" source="__1eoIOHTEeKCZbxNW-U3VQ" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_anQokOHUEeKCZbxNW-U3VQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_anQokeHUEeKCZbxNW-U3VQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_anKh8eHUEeKCZbxNW-U3VQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_am4OEOHUEeKCZbxNW-U3VQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_anKh8uHUEeKCZbxNW-U3VQ" points="[-14, -11, 258, 211]$[-263, -208, 9, 14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anQokuHUEeKCZbxNW-U3VQ" id="(0.32,0.11)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anQok-HUEeKCZbxNW-U3VQ" id="(0.4608695652173913,0.9740932642487047)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_P0NeYGQ5EeOlpfB_tZS-QA" type="4001" source="_9IsT4NjiEeKQqZMBCFd2Uw" target="_zpKewNa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_P0NeY2Q5EeOlpfB_tZS-QA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NeZGQ5EeOlpfB_tZS-QA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P0NeZWQ5EeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NeZmQ5EeOlpfB_tZS-QA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P0NeZ2Q5EeOlpfB_tZS-QA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NeaGQ5EeOlpfB_tZS-QA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P0NeaWQ5EeOlpfB_tZS-QA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NeamQ5EeOlpfB_tZS-QA" x="-22" y="15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P0Nea2Q5EeOlpfB_tZS-QA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NebGQ5EeOlpfB_tZS-QA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P0NebWQ5EeOlpfB_tZS-QA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NebmQ5EeOlpfB_tZS-QA" x="-14" y="-15"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_P0NeYWQ5EeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_PznBc2Q5EeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_P0NeYmQ5EeOlpfB_tZS-QA" points="[-2, -4, 81, 0]$[-78, -1, 5, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P0WoUGQ5EeOlpfB_tZS-QA" id="(0.004210526315789474,0.5560747663551402)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P0WoUWQ5EeOlpfB_tZS-QA" id="(0.9705882352941176,0.8646616541353384)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_p-pf4GtpEeOlpfB_tZS-QA" type="4002" source="_ft-hUWtpEeOlpfB_tZS-QA" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_p-pf42tpEeOlpfB_tZS-QA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_p-pf5GtpEeOlpfB_tZS-QA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_p-pf4WtpEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_p-dSoGtpEeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_p-pf4mtpEeOlpfB_tZS-QA" points="[-2, -16, 32, 261]$[-33, -267, 1, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p-vmgGtpEeOlpfB_tZS-QA" id="(0.4930555555555556,0.16)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p-vmgWtpEeOlpfB_tZS-QA" id="(0.6347826086956522,0.9481865284974094)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0R3XIHpGEeOlpfB_tZS-QA" type="4003" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_RopgYXpGEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0R3XI3pGEeOlpfB_tZS-QA" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0R3XJHpGEeOlpfB_tZS-QA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0R3XJXpGEeOlpfB_tZS-QA" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0R3XJnpGEeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0R3XIXpGEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="layers.uml#_0RxQgHpGEeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0R3XInpGEeOlpfB_tZS-QA" points="[-14, -9, 116, 0]$[-121, -10, 9, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0SDkYHpGEeOlpfB_tZS-QA" id="(0.12173913043478261,0.4)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0SDkYXpGEeOlpfB_tZS-QA" id="(0.9485714285714286,0.44954128440366975)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_2bq8QHpGEeOlpfB_tZS-QA" type="4003" source="_zpKewNa7EeKPiuTfpuvqHA" target="_RopgYXpGEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_2bq8Q3pGEeOlpfB_tZS-QA" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2bq8RHpGEeOlpfB_tZS-QA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2bq8RXpGEeOlpfB_tZS-QA" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2bq8RnpGEeOlpfB_tZS-QA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_2bq8QXpGEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="layers.uml#_2bk1oHpGEeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2bq8QnpGEeOlpfB_tZS-QA" points="[-1, 3, 0, -103]$[-1, 104, 0, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bxC4HpGEeOlpfB_tZS-QA" id="(0.2603305785123967,0.9774436090225563)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bxC4XpGEeOlpfB_tZS-QA" id="(0.5942857142857143,0.01834862385321101)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_C_qusNa8EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="property values" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_EH9zgNa8EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zgta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zg9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zhNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zhda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zhta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zh9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EH9ziNa8EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zida8EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zita8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zi9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zjNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zjda8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zjta8EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zj9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zkNa8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zkda8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zkta8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zk9a8EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zlNa8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zlda8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zlta8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zl9a8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zgda8EeKPiuTfpuvqHA" x="168" y="252" width="130"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VpXS4O8UEeK0p4PkXjd-_Q" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpYhAO8UEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZIEO8UEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpZIEe8UEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZIEu8UEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpZIE-8UEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZvIO8UEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VpZvIe8UEeK0p4PkXjd-_Q" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VpZvIu8UEeK0p4PkXjd-_Q" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VpZvI-8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VpZvJO8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VpZvJe8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpZvJu8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VpaWMO8UEeK0p4PkXjd-_Q" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VpaWMe8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VpaWMu8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VpaWM-8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpaWNO8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpXS4e8UEeK0p4PkXjd-_Q" x="384" y="66" width="241"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XZo9sO8UEeK0p4PkXjd-_Q" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkwO8UEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkwe8UEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkwu8UEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkw-8UEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkxO8UEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkxe8UEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZENCEO8UEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENCEe8UEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIO8UEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EClass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIe8UEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIu8UEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpI-8UEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XZpkxu8UEeK0p4PkXjd-_Q" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XZpkx-8UEeK0p4PkXjd-_Q" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XZpkyO8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XZpkye8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL0O8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL0e8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XZqL0u8UEeK0p4PkXjd-_Q" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_uYj-QO8ZEeK0p4PkXjd-_Q" type="3007" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1Bdk4O8ZEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Bdk4e8ZEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="776"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_uYMx4O8ZEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uYj-Qe8ZEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XZqL0-8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XZqL1O8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL1e8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL1u8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XZqL1-8UEeK0p4PkXjd-_Q" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XZqL2O8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XZqL2e8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL2u8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL2-8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Interface" href="layers.uml#_XZJOcO8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZo9se8UEeK0p4PkXjd-_Q" x="384" y="234" width="259"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_C_qusda8EeKPiuTfpuvqHA"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_g3VDUO8YEeK0p4PkXjd-_Q" type="4003" source="_EH9zgNa8EeKPiuTfpuvqHA" target="_XZo9sO8UEeK0p4PkXjd-_Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_g3WRcO8YEeK0p4PkXjd-_Q" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g3WRce8YEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g3WRcu8YEeK0p4PkXjd-_Q" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g3WRc-8YEeK0p4PkXjd-_Q" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_g3VDUe8YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="layers.uml#_g2QFQO8YEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g3VDUu8YEeK0p4PkXjd-_Q" points="[8, -7, -96, 0]$[94, -10, -10, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g3bJ8O8YEeK0p4PkXjd-_Q" id="(0.9384615384615385,0.31)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g3bJ8e8YEeK0p4PkXjd-_Q" id="(0.04219409282700422,0.3157894736842105)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_QLWs4Na8EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="datatypes" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_RJ_fYNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fYta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fY9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fZNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fZda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fZta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fZ9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RJ_faNa8EeKPiuTfpuvqHA" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RKJQYNa8EeKPiuTfpuvqHA" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RKJQYda8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RKJQYta8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RKJQY9a8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RKJQZNa8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RKJQZda8EeKPiuTfpuvqHA" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RKJQZta8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RKJQZ9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RKJQaNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RKJQada8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RJ_fYda8EeKPiuTfpuvqHA" x="36" y="30"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SukQgNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQgta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQg9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQhNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQhda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQhta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQh9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wy62w9a8EeKPiuTfpuvqHA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xNa8EeKPiuTfpuvqHA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xda8EeKPiuTfpuvqHA" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xta8EeKPiuTfpuvqHA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62x9a8EeKPiuTfpuvqHA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62yNa8EeKPiuTfpuvqHA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SukQiNa8EeKPiuTfpuvqHA" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SukQida8EeKPiuTfpuvqHA" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SukQita8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SukQi9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SukQjNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQjda8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SukQjta8EeKPiuTfpuvqHA" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SukQj9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SukQkNa8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SukQkda8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQkta8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_SuHkkNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQgda8EeKPiuTfpuvqHA" x="192" y="30"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Tq9nUNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nUta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nU9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nVNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nVda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nVta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nV9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZD0iYNa8EeKPiuTfpuvqHA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iYda8EeKPiuTfpuvqHA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iYta8EeKPiuTfpuvqHA" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iY9a8EeKPiuTfpuvqHA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iZNa8EeKPiuTfpuvqHA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iZda8EeKPiuTfpuvqHA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Tq9nWNa8EeKPiuTfpuvqHA" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Tq9nWda8EeKPiuTfpuvqHA" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Tq9nWta8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Tq9nW9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Tq9nXNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nXda8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Tq9nXta8EeKPiuTfpuvqHA" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Tq9nX9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Tq9nYNa8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Tq9nYda8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nYta8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_TqqsYNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nUda8EeKPiuTfpuvqHA" x="348" y="30"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_c1uu0NheEeKgkM6XJF9t4A" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu0theEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu09heEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu1NheEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu1dheEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu1theEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu19heEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_g91zsNheEeKgkM6XJF9t4A" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zsdheEeKgkM6XJF9t4A" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zstheEeKgkM6XJF9t4A" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zs9heEeKgkM6XJF9t4A" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91ztNheEeKgkM6XJF9t4A" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91ztdheEeKgkM6XJF9t4A" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_c1uu2NheEeKgkM6XJF9t4A" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_c1uu2dheEeKgkM6XJF9t4A" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_c1uu2theEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_c1uu29heEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_c1uu3NheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu3dheEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_c1uu3theEeKgkM6XJF9t4A" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_c1uu39heEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_c1uu4NheEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_c1uu4dheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu4theEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_c1QNsNheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu0dheEeKgkM6XJF9t4A" x="36" y="198"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lV_fsNheEeKgkM6XJF9t4A" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_fstheEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_fs9heEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_ftNheEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_ftdheEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_fttheEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_ft9heEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qH1eENheEeKgkM6XJF9t4A" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eEdheEeKgkM6XJF9t4A" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eEtheEeKgkM6XJF9t4A" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eE9heEeKgkM6XJF9t4A" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eFNheEeKgkM6XJF9t4A" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eFdheEeKgkM6XJF9t4A" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lV_fuNheEeKgkM6XJF9t4A" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_lV_fudheEeKgkM6XJF9t4A" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lV_futheEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_lV_fu9heEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_lV_fvNheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fvdheEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_lV_fvtheEeKgkM6XJF9t4A" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lV_fv9heEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_lV_fwNheEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_lV_fwdheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fwtheEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_lVnFMNheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fsdheEeKgkM6XJF9t4A" x="240" y="198" height="103"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QfRJAO7GEeK0p4PkXjd-_Q" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJAu7GEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJA-7GEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJBO7GEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJBe7GEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJBu7GEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJB-7GEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Udvww-7GEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UdvwxO7GEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwxe7GEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwxu7GEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwx-7GEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UdvwyO7GEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QfRJCO7GEeK0p4PkXjd-_Q" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QfRJCe7GEeK0p4PkXjd-_Q" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QfRJCu7GEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QfRJC-7GEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QfRJDO7GEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJDe7GEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QfRJDu7GEeK0p4PkXjd-_Q" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QfRJD-7GEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QfRJEO7GEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QfRJEe7GEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJEu7GEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJAe7GEeK0p4PkXjd-_Q" x="60" y="366" width="241"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_QLWs4da8EeKPiuTfpuvqHA"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_XXUswNhbEeKgkM6XJF9t4A" type="PapyrusUMLClassDiagram" name="Property" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_bHaTMNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHaTMthbEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ0NhbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHgZ0dhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ0thbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHgZ09hbEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ1NhbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bHgZ1dhbEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ1thbEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_sdoisNhcEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_sdWO0NhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sdoisdhcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hUWEoNhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_hT9qINhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hUWEodhdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HlSkkO3qEeKwLp35IbAIig" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_HjktUO3qEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HlSkke3qEeKwLp35IbAIig"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ19hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ2NhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ2dhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ2thbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ29hbEeKgkM6XJF9t4A" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_9LXrUNhcEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_9LLeENhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9LXrUdhcEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ3NhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ3dhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ3thbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ39hbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ4NhbEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ4dhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ4thbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ49hbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ5NhbEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHaTMdhbEeKgkM6XJF9t4A" x="18" y="144" height="385"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bvJBkNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBkthbEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBk9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBlNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBldhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBlthbEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBl9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bvJBmNhbEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBmdhbEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBmthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBm9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBnNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBndhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBnthbEeKgkM6XJF9t4A" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_ZGIS4EczEeOEBJ2PxFQgyQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ZFFKAEczEeOEBJ2PxFQgyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZGIS4UczEeOEBJ2PxFQgyQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_oKCn4Ec8EeOEBJ2PxFQgyQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_oJwUAEc8EeOEBJ2PxFQgyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oKCn4Uc8EeOEBJ2PxFQgyQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBn9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBoNhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBodhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBothbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBo9hbEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBpNhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBpdhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBpthbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBp9hbEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBkdhbEeKgkM6XJF9t4A" x="378" y="426" width="205"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EoeLgNhcEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLgthcEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLg9hcEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLhNhcEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLhdhcEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLhthcEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLh9hcEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EoeLiNhcEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLidhcEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_oT_MwNhcEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_oTs44NhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oT_MwdhcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kq6-4NhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_kquxoNhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kq6-4dhdEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLithcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLi9hcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLjNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLjdhcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLjthcEeKgkM6XJF9t4A" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_YqkrENhgEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_VRDxkNhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YqkrEdhgEeKgkM6XJF9t4A" x="79" y="4"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLj9hcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLkNhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLkdhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLkthcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLk9hcEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLlNhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLldhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLlthcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLl9hcEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLgdhcEeKgkM6XJF9t4A" x="378" y="144"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_I4Ip4NhcEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip4thcEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip49hcEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip5NhcEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip5dhcEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip5thcEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip59hcEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I4Ip6NhcEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip6dhcEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_r6sYQNhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_r6aEYNhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_r6sYQdhdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_viIZANhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_vhv-gNhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_viIZAdhdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_i5_scNhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_i5nR8NhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_i5_scdhgEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mSjjsNhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_mR_jANhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mSjjsdhgEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pk2a4NhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_pkeAYNhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pk2a4dhgEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__M_A8NhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#__MsGANhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__M_A8dhgEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip6thcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip69hcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip7NhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip7dhcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip7thcEeKgkM6XJF9t4A" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_K3ckUNheEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_K3KQcNheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_K3ckUdheEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip79hcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip8NhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip8dhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip8thcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip89hcEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip9NhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip9dhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip9thcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip99hcEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_I3wPYNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip4dhcEeKgkM6XJF9t4A" x="924" y="144"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_RF_msNhdEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_msthdEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_ms9hdEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_mtNhdEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_mtdhdEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_mtthdEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_mt9hdEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RF_muNhdEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mudhdEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RF_muthdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mu9hdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mvNhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mvdhdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mvthdEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RF_mv9hdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mwNhdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mwdhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mwthdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mw9hdEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RF_mxNhdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mxdhdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mxthdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mx9hdEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_msdhdEeKgkM6XJF9t4A" x="96" y="12" width="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6SDikNhhEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDikthhEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDik9hhEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDilNhhEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDildhhEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDilthhEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDil9hhEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6SDimNhhEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6SDimdhhEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_HJqRsNhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_HJX90NhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HJqRsdhjEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6SDimthhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6SDim9hhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDinNhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDindhhEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6SDinthhEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6SDin9hhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6SDioNhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDiodhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDiothhEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6SDio9hhEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6SDipNhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6SDipdhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDipthhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDip9hhEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_6RrIENhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDikdhhEeKgkM6XJF9t4A" x="300" y="582"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-zGr4NhhEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr4thhEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr49hhEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr5NhhEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr5dhhEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr5thhEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr59hhEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-zGr6NhhEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr6dhhEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_lMxgANhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_lMfMINhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lMxgAdhjEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr6thhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr69hhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr7NhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr7dhhEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr7thhEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr79hhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr8NhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr8dhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr8thhEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr89hhEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr9NhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr9dhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr9thhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr99hhEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-yuRYNhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr4dhhEeKgkM6XJF9t4A" x="444" y="582"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CxJOwNhiEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOwthiEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOw9hiEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOxNhiEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOxdhiEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOxthiEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOx9hiEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CxPVYNhiEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVYdhiEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_oRl74NhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_oRNhYNhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oRl74dhjEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVYthiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVY9hiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVZNhiEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVZdhiEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVZthiEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVZ9hiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVaNhiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVadhiEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVathiEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVa9hiEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVbNhiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVbdhiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVbthiEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVb9hiEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Cww0QNhiEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxJOwdhiEeKgkM6XJF9t4A" x="594" y="582"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6xipANhjEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipAthjEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipA9hjEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipBNhjEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipBdhjEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipBthjEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipB9hjEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6xipCNhjEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6xipCdhjEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6xipCthjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6xipC9hjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipDNhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipDdhjEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6xipDthjEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6xipD9hjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6xipENhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipEdhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipEthjEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6xipE9hjEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6xipFNhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6xipFdhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipFthjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipF9hjEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_6xEH4NhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipAdhjEeKgkM6XJF9t4A" x="300" y="318" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__i1NwNhjEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UYNhjEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UYdhjEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UYthjEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UY9hjEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UZNhjEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UZdhjEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__i7UZthjEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__i7UZ9hjEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__i7UaNhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__i7UadhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__i7UathjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7Ua9hjEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__i7UbNhjEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__i7UbdhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__i7UbthjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__i7Ub9hjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7UcNhjEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__i7UcdhjEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__i7UcthjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__i7Uc9hjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__i7UdNhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7UddhjEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#__iczQNhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i1NwdhjEeKgkM6XJF9t4A" x="420" y="318" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_E4NXANhkEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXAthkEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXA9hkEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXBNhkEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXBdhkEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXBthkEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXB9hkEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_E4NXCNhkEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXCdhkEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXCthkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXC9hkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXDNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXDdhkEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXDthkEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXD9hkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXENhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXEdhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXEthkEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXE9hkEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXFNhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXFdhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXFthkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXF9hkEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_E308gNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXAdhkEeKgkM6XJF9t4A" x="540" y="318" height="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_J6bTsNhkEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTsthkEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTs9hkEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTtNhkEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTtdhkEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTtthkEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTt9hkEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_J6bTuNhkEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTudhkEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_U0-VsNhkEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_U0l7MNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U0-VsdhkEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTuthkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTu9hkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTvNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTvdhkEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTvthkEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTv9hkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTwNhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTwdhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTwthkEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTw9hkEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTxNhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTxdhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTxthkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTx9hkEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_J6C5MNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTsdhkEeKgkM6XJF9t4A" x="660" y="318" width="181" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_agYdYNxWEeKwptaAAanMDg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekANxWEeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekAdxWEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekAtxWEeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekA9xWEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekBNxWEeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekBdxWEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_agekBtxWEeKwptaAAanMDg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_agekB9xWEeKwptaAAanMDg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_agekCNxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_agekCdxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_agekCtxWEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekC9xWEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_agekDNxWEeKwptaAAanMDg" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_OVcVENxXEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_OU7XsNxXEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OVcVEdxXEeKwptaAAanMDg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_agekDdxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_agekDtxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_agekD9xWEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekENxWEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_agekEdxWEeKwptaAAanMDg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_agekEtxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_agekE9xWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_agekFNxWEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekFdxWEeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_agAC4NxWEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agYdYdxWEeKwptaAAanMDg" x="174" y="582"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_XXUswdhbEeKgkM6XJF9t4A"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_L2wXINhcEeKgkM6XJF9t4A" type="4001" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXI9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXJNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXJdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXJthcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXJ9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXKNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXKdhcEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXKthcEeKgkM6XJF9t4A" x="-33" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXK9hcEeKgkM6XJF9t4A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXLNhcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXLdhcEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXLthcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_L2wXIdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_L2X8oNhcEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_L2wXIthcEeKgkM6XJF9t4A" points="[4, 6, -164, 0]$[160, 5, -8, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L28kYNhcEeKgkM6XJF9t4A" id="(0.9682539682539683,0.16591928251121077)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L28kYdhcEeKgkM6XJF9t4A" id="(0.011764705882352941,0.3709677419354839)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_O7bCANhcEeKgkM6XJF9t4A" type="4001" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7bCA9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCBNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7bCBdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCBthcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7bCB9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCCNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7bCCdhcEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCCthcEeKgkM6XJF9t4A" x="-47" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7hIoNhcEeKgkM6XJF9t4A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7hIodhcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7hIothcEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7hIo9hcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_O7bCAdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_O7IuINhcEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7bCAthcEeKgkM6XJF9t4A" points="[7, 2, -165, 0]$[163, 5, -9, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7nPQNhcEeKgkM6XJF9t4A" id="(0.9764705882352941,0.8859934853420195)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7nPQdhcEeKgkM6XJF9t4A" id="(0.09,0.65)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_khaTANhcEeKgkM6XJF9t4A" type="4001" source="_J6bTsNhkEeKgkM6XJF9t4A" target="_I4Ip4NhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTA9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTBNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTBdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTBthcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTB9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTCNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTCdhcEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTCthcEeKgkM6XJF9t4A" x="-32" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTC9hcEeKgkM6XJF9t4A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTDNhcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTDdhcEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTDthcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_khaTAdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_khB4gNhcEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_khaTAthcEeKgkM6XJF9t4A" points="[7, -6, -114, 103]$[118, -107, -3, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_khmgQNhcEeKgkM6XJF9t4A" id="(0.96,0.28)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_khmgQdhcEeKgkM6XJF9t4A" id="(0.039525691699604744,0.8604651162790697)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YRoG8NhdEeKgkM6XJF9t4A" type="4002" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YRuNkNhdEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YRuNkdhdEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YRoG8dhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_YRb5sNhdEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YRoG8thdEeKgkM6XJF9t4A" points="[0, -4, 0, 48]$[-2, -42, -2, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YRuNkthdEeKgkM6XJF9t4A" id="(0.47368421052631576,0.017937219730941704)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YRuNk9hdEeKgkM6XJF9t4A" id="(0.45323741007194246,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5UPMQNhdEeKgkM6XJF9t4A" type="4002" source="_EoeLgNhcEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5UPMQ9hdEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5UPMRNhdEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5UPMQdhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_5T84YNhdEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5UPMQthdEeKgkM6XJF9t4A" points="[-13, -4, 179, 58]$[-177, -57, 15, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UV58NhdEeKgkM6XJF9t4A" id="(0.3764705882352941,0.03225806451612903)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UV58dhdEeKgkM6XJF9t4A" id="(0.9112426035502958,0.74)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7u0_YNhdEeKgkM6XJF9t4A" type="4002" source="_I4Ip4NhcEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7u0_Y9hdEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7u0_ZNhdEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_7u0_YdhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_7uWeQNhdEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7u0_YthdEeKgkM6XJF9t4A" points="[-24, -5, 419, 89]$[-432, -96, 11, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7u0_ZdhdEeKgkM6XJF9t4A" id="(0.2529411764705882,0.04032258064516129)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7u7GANhdEeKgkM6XJF9t4A" id="(0.9349112426035503,0.43)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_g5zEYNhiEeKgkM6XJF9t4A" type="4002" source="_6SDikNhhEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_g5zEY9hiEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g5zEZNhiEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_g5zEYdhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_g5ap4NhiEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g5zEYthiEeKgkM6XJF9t4A" points="[3, -3, -68, 60]$[70, -59, -1, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g55LANhiEeKgkM6XJF9t4A" id="(0.51,0.03)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g55LAdhiEeKgkM6XJF9t4A" id="(0.44,0.96)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_klsuYNhiEeKgkM6XJF9t4A" type="4002" source="_-zGr4NhhEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_klsuY9hiEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_klsuZNhiEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_klsuYdhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_klghINhiEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_klsuYthiEeKgkM6XJF9t4A" points="[-3, -3, 52, 61]$[-55, -59, 0, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kly1ANhiEeKgkM6XJF9t4A" id="(0.44,0.03)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kly1AdhiEeKgkM6XJF9t4A" id="(0.55,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_mlyW0NhiEeKgkM6XJF9t4A" type="4002" source="_CxJOwNhiEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_mlyW09hiEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mlyW1NhiEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_mlyW0dhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_mlgC8NhiEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mlyW0thiEeKgkM6XJF9t4A" points="[-23, -12, 136, 67]$[-150, -67, 9, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ml4dcNhiEeKgkM6XJF9t4A" id="(0.23,0.11)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ml4dcdhiEeKgkM6XJF9t4A" id="(0.8,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_n32JsNhkEeKgkM6XJF9t4A" type="4002" source="_6xipANhjEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_n38QUNhkEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_n38QUdhkEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_n32JsdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_n3p8cNhkEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_n32JsthkEeKgkM6XJF9t4A" points="[7, -5, -63, 44]$[66, -44, -4, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n38QUthkEeKgkM6XJF9t4A" id="(0.52,0.09090909090909091)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n38QU9hkEeKgkM6XJF9t4A" id="(0.25882352941176473,0.9629629629629629)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rg2QsNhkEeKgkM6XJF9t4A" type="4002" source="__i1NwNhjEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rg23wNhkEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rg23wdhkEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rg2QsdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_rgmZENhkEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rg2QsthkEeKgkM6XJF9t4A" points="[0, -7, 0, 48]$[0, -46, 0, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rg7JMNhkEeKgkM6XJF9t4A" id="(0.43,0.12727272727272726)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rg7JMdhkEeKgkM6XJF9t4A" id="(0.5,0.9333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_tdN2wNhkEeKgkM6XJF9t4A" type="4002" source="_E4NXANhkEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tdN2w9hkEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tdN2xNhkEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tdN2wdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_tdBpgNhkEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tdN2wthkEeKgkM6XJF9t4A" points="[-10, -11, 39, 45]$[-45, -50, 4, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdT9YNhkEeKgkM6XJF9t4A" id="(0.23,0.22916666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdT9YdhkEeKgkM6XJF9t4A" id="(0.8,0.9555555555555556)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_wLqaANhkEeKgkM6XJF9t4A" type="4002" source="_J6bTsNhkEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wLqaA9hkEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wLqaBNhkEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_wLqaAdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_wLYGINhkEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wLqaAthkEeKgkM6XJF9t4A" points="[-19, -7, 128, 48]$[-142, -52, 5, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wLqaBdhkEeKgkM6XJF9t4A" id="(0.19607843137254902,0.12727272727272726)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wLqaBthkEeKgkM6XJF9t4A" id="(0.9705882352941176,0.9333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_drg8oNxWEeKwptaAAanMDg" type="4002" source="_agYdYNxWEeKwptaAAanMDg" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_drg8o9xWEeKwptaAAanMDg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_drg8pNxWEeKwptaAAanMDg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_drg8odxWEeKwptaAAanMDg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_drCbgNxWEeKwptaAAanMDg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_drg8otxWEeKwptaAAanMDg" points="[9, -4, -135, 59]$[141, -60, -3, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_drnqUNxWEeKwptaAAanMDg" id="(0.7,0.04)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_drnqUdxWEeKwptaAAanMDg" id="(0.1,0.97)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_ePKuUNhbEeKgkM6XJF9t4A" type="PapyrusUMLClassDiagram" name="packages" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_fBRgsNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgsthbEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgs9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgtNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgtdhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgtthbEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgt9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fBRguNhbEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fBRgudhbEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_pSg0ENhoEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_pSIZkNhoEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pSg0EdhoEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fBRguthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fBRgu9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fBRgvNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBRgvdhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fBXnUNhbEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fBXnUdhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fBXnUthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fBXnU9hbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBXnVNhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fBXnVdhbEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fBXnVthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fBXnV9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fBXnWNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBXnWdhbEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_fAmyUNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBRgsdhbEeKgkM6XJF9t4A" x="212" y="111"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gglXUNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXUthbEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXU9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXVNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXVdhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXVthbEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXV9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gglXWNhbEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gglXWdhbEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gglXWthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gglXW9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXXNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXXdhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gglXXthbEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gglXX9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gglXYNhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXYdhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXYthbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gglXY9hbEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gglXZNhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gglXZdhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXZthbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXZ9hbEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXUdhbEeKgkM6XJF9t4A" x="510" y="108" width="145" height="103"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_ePKuUdhbEeKgkM6XJF9t4A"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_jtwd8NhbEeKgkM6XJF9t4A" type="4001" source="_fBRgsNhbEeKgkM6XJF9t4A" target="_gglXUNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd89hbEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd9NhbEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd9dhbEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd9thbEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd99hbEeKgkM6XJF9t4A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd-NhbEeKgkM6XJF9t4A" x="13" y="-19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd-dhbEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd-thbEeKgkM6XJF9t4A" x="-21" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd-9hbEeKgkM6XJF9t4A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd_NhbEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd_dhbEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd_thbEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_jtwd8dhbEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_jtR80NhbEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jtwd8thbEeKgkM6XJF9t4A" points="[10, -7, -200, 0]$[208, -8, -2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_juCx0NhbEeKgkM6XJF9t4A" id="(0.9,0.45)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_juCx0dhbEeKgkM6XJF9t4A" id="(0.013793103448275862,0.41)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_6nHbUNhbEeKgkM6XJF9t4A" type="4002" source="_fBRgsNhbEeKgkM6XJF9t4A" target="_gglXUNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6nNh8NhbEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6nNh8dhbEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_6nHbUdhbEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_6l23ENhbEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6nHbUthbEeKgkM6XJF9t4A" points="[9, 2, -202, 0]$[207, 3, -4, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6nTokNhbEeKgkM6XJF9t4A" id="(0.91,0.79)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6nTokdhbEeKgkM6XJF9t4A" id="(0.027586206896551724,0.8155339805825242)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Dtu4wNjkEeKQqZMBCFd2Uw" type="PapyrusUMLClassDiagram" name="Layer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Uvsk8NjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk8tjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk89jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk9NjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk9djkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk9tjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk99jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uvsk-NjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uvsk-djkEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uvsk-tjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uvsk-9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uvsk_NjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uvsk_djkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uvsk_tjkEeKQqZMBCFd2Uw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_gjkCIOKIEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_gfah8OKIEeKOWoLMe41Aew"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gjkCIeKIEeKOWoLMe41Aew"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vMCucOKIEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_sJkb8OKIEeKOWoLMe41Aew"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vMCuceKIEeKOWoLMe41Aew" x="61" y="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wyp-kOKWEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ldtfkOKWEeKOWoLMe41Aew"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wyp-keKWEeKOWoLMe41Aew" x="70" y="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NC0BgOKXEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_IR-vwOKXEeKOWoLMe41Aew"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NC0BgeKXEeKOWoLMe41Aew" x="68" y="90"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uvsk_9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UvslANjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UvslAdjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvslAtjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UvslA9jkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UvslBNjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UvslBdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UvslBtjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvslB9jkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uvsk8djkEeKQqZMBCFd2Uw" x="126" y="114" width="295" height="511"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UvyrkNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yMNjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yMdjkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yMtjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yM9jkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yNNjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yNdjkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv4yNtjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yN9jkEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yONjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yOdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yOtjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yO9jkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yPNjkEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yPdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yPtjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yP9jkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yQNjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yQdjkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yQtjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yQ9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yRNjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yRdjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvyrkdjkEeKQqZMBCFd2Uw" x="606" y="246" height="145"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_blTK0NjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK0tjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK09jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK1NjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK1djkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK1tjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK19jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_blTK2NjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_blTK2djkEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_uF4KENjkEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_1B8jINjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uF4KEdjkEeKQqZMBCFd2Uw" x="58" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uF-QsNjkEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_4f0_QNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uF-QsdjkEeKQqZMBCFd2Uw" x="58" y="4"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_blTK2tjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_blTK29jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK3NjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK3djkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_blTK3tjkEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_blTK39jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_blTK4NjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK4djkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK4tjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_blTK49jkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_blTK5NjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_blTK5djkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK5tjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK59jkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_vMMQsNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK0djkEeKQqZMBCFd2Uw" x="600" y="414"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cs2BsNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BstjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2Bs9jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BtNjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2BtdjkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BttjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2Bt9jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cs2BuNjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IUNjkEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IUdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IUtjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IU9jkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IVNjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IVdjkEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IVtjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IV9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IWNjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IWdjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IWtjkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IW9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IXNjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IXdjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IXtjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs2BsdjkEeKQqZMBCFd2Uw" x="600" y="114"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1pN_sNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_stjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_s9jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_tNjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_tdjkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_ttjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_t9jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1pN_uNjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_udjkEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_utjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_u9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_vNjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_vdjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_vtjkEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_v9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_wNjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_wdjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_wtjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_w9jkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_xNjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_xdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_xtjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_x9jkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_sdjkEeKQqZMBCFd2Uw" x="600" y="576"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_o64RUO-MEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fcO-MEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o65fce-MEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fcu-MEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o65fc--MEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fdO-MEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o66GgO-MEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o66Gge-MEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_o66Ggu-MEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_o66Gg--MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_o66GhO-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Ghe-MEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66Ghu-MEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_o66Gh--MEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_o66GiO-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_o66Gie-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Giu-MEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66Gi--MEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_o66GjO-MEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_o66Gje-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_o66Gju-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Gj--MEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66GkO-MEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o64RUe-MEeK0p4PkXjd-_Q" x="600" y="696"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Dtu4wdjkEeKQqZMBCFd2Uw"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Uv-40NjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_UvyrkNjkEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-409jkEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-41NjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-41djkEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-41tjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-419jkEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-42NjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-42djkEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-42tjkEeKQqZMBCFd2Uw" x="-41" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-429jkEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-43NjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-43djkEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-43tjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Uv-40djkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_5YuNINa8EeKPiuTfpuvqHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Uv-40tjkEeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YMwhsNjkEeKQqZMBCFd2Uw" id="(0.9469026548672567,0.3131115459882583)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hiwAsNjkEeKQqZMBCFd2Uw" id="(0.06,0.16)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_blfYENjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_blTK0NjkEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bllesNjkEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bllesdjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bllestjkEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_blles9jkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_blletNjkEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_blletdjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bllettjkEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bllet9jkEeKQqZMBCFd2Uw" x="-36" y="26"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_blleuNjkEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_blleudjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_blleutjkEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_blleu9jkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_blfYEdjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_A1nlgNjLEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_blfYEtjkEeKQqZMBCFd2Uw" points="[-113, -124, 126, 137]$[-239, -261, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f6SOENjkEeKQqZMBCFd2Uw" id="(0.9601769911504425,0.6986301369863014)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uuS08NjkEeKQqZMBCFd2Uw" id="(0.0,0.41935483870967744)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ctIVkNjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_cs2BsNjkEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVk9jkEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVlNjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVldjkEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVltjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVl9jkEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVmNjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVmdjkEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVmtjkEeKQqZMBCFd2Uw" x="-47" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVm9jkEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVnNjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVndjkEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVntjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ctIVkdjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_LBIf0NjiEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ctIVktjkEeKQqZMBCFd2Uw" points="[-113, -124, 126, 137]$[-239, -261, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ewVjcNjkEeKQqZMBCFd2Uw" id="(0.9513274336283186,0.09784735812133072)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3rXdoNjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_1pN_sNjkEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkQNjkEeKQqZMBCFd2Uw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkQdjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkQtjkEeKQqZMBCFd2Uw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkQ9jkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkRNjkEeKQqZMBCFd2Uw" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkRdjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkRtjkEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkR9jkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkSNjkEeKQqZMBCFd2Uw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkSdjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkStjkEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkS9jkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3rXdodjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_3q_DINjkEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3rXdotjkEeKQqZMBCFd2Uw" points="[6, 2, -253, 0]$[254, 0, -5, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rjq4NjkEeKQqZMBCFd2Uw" id="(0.9734513274336283,0.974559686888454)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rjq4djkEeKQqZMBCFd2Uw" id="(0.05,0.38)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rE_YcO-MEeK0p4PkXjd-_Q" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_o64RUO-MEeK0p4PkXjd-_Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rE__gO-MEeK0p4PkXjd-_Q" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rE__ge-MEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFAmkO-MEeK0p4PkXjd-_Q" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmke-MEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFAmku-MEeK0p4PkXjd-_Q" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmk--MEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFAmlO-MEeK0p4PkXjd-_Q" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmle-MEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFAmlu-MEeK0p4PkXjd-_Q" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAml--MEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFBNoO-MEeK0p4PkXjd-_Q" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFBNoe-MEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rE_Yce-MEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_rEb-0O-MEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rE_Ycu-MEeK0p4PkXjd-_Q" points="[0, 4, -308, -115]$[0, 127, -308, 8]$[301, 127, -7, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rFKXkO-MEeK0p4PkXjd-_Q" id="(0.7654867256637168,0.9921722113502935)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rFK-oO-MEeK0p4PkXjd-_Q" id="(0.07,0.44)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_-aAtoNjpEeKQqZMBCFd2Uw" type="PapyrusUMLClassDiagram" name="Registries" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Atmg4NjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg4tjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg49jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg5NjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg5djqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg5tjqEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg59jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Atmg6NjqEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg6djqEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_RruhsA2qEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_idRzUA2qEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idRzUQ2qEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYA2qEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EAttribute"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYQ2qEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYg2qEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYw2qEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="layers.uml#_RrX8YA2qEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RruhsQ2qEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg6tjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg69jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg7NjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg7djqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg7tjqEeKQqZMBCFd2Uw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_1YYywNkCEeKQqZMBCFd2Uw" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_1X6RoNkCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1YYywdkCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lJ0JoOT7EeKSDdPH_NXL-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_dcjjAOT7EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lJ0JoeT7EeKSDdPH_NXL-g" x="53" y="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KmAZMA3LEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_Klpz4A3LEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KmAZMQ3LEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg79jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg8NjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg8djqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg8tjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg89jqEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg9NjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg9djqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg9tjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg99jqEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_8OefoNjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg4djqEeKQqZMBCFd2Uw" y="96" width="179" height="277"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ERoBQNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBQtjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBQ9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBRNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBRdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBRtjqEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBR9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ERoBSNjqEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBSdjqEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_G8FcYNjqEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_sdWO0NhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_G8FcYdjqEeKQqZMBCFd2Uw" x="36" y="12"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_G8LjANjqEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_hT9qINhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_G8LjAdjqEeKQqZMBCFd2Uw" x="36" y="12"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBStjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBS9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBTNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBTdjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBTtjqEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBT9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBUNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBUdjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBUtjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBU9jqEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBVNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBVdjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBVtjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBV9jqEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBQdjqEeKQqZMBCFd2Uw" x="678" y="96"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ItfvoNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvotjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Itfvo9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvpNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ItfvpdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvptjqEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Itfvp9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ItfvqNjqEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ItfvqdjqEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_j-VYsNjsEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_j-DE0NjsEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_j-VYsdjsEeKQqZMBCFd2Uw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ItfvqtjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Itfvq9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvrNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvrdjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ItfvrtjqEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Itfvr9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ItfvsNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvsdjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvstjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Itfvs9jqEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ItfvtNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ItfvtdjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvttjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Itfvt9jqEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ItBOgNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvodjqEeKQqZMBCFd2Uw" x="504" y="96" width="115" height="115"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hhHaQNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaQtjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaQ9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaRNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaRdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaRtjqEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaR9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XtJ68NjsEeKQqZMBCFd2Uw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ68djsEeKQqZMBCFd2Uw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ68tjsEeKQqZMBCFd2Uw" key="StereotypeList" value="Ecore::EClass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ689jsEeKQqZMBCFd2Uw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ69NjsEeKQqZMBCFd2Uw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ69djsEeKQqZMBCFd2Uw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hhHaSNjqEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaSdjqEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_fQvoMNjsEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_fQXNsNjsEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fQvoMdjsEeKQqZMBCFd2Uw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaStjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaS9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaTNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaTdjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaTtjqEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaT9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaUNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaUdjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaUtjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaU9jqEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaVNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaVdjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaVtjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaV9jqEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_hgu_wNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaQdjqEeKQqZMBCFd2Uw" x="294" y="96" width="139" height="115"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HTfqQNj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqQtj_EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqQ9j_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqRNj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqRdj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqRtj_EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqR9j_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTfqSNj_EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTfqSdj_EeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTfqStj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTfqS9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTfqTNj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqTdj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTfqTtj_EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTfqT9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTfqUNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTfqUdj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqUtj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTlw4Nj_EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTlw4dj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTlw4tj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTlw49j_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTlw5Nj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_tLip8Nj-EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqQdj_EeKQqZMBCFd2Uw" x="312" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HTlw5dj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTlw59j_EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3gNj_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTr3gdj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3gtj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTr3g9j_EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3hNj_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTr3hdj_EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3htj_EeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3h9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3iNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3idj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3itj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3i9j_EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3jNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3jdj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3jtj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3j9j_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3kNj_EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3kdj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3ktj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3k9j_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3lNj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTlw5tj_EeKQqZMBCFd2Uw" x="768" y="329"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_P5J4gNj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4gtj_EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4g9j_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4hNj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4hdj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4htj_EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4h9j_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gxnDYNj_EeKQqZMBCFd2Uw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDYdj_EeKQqZMBCFd2Uw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDYtj_EeKQqZMBCFd2Uw" key="StereotypeList" value="Ecore::EClass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDY9j_EeKQqZMBCFd2Uw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDZNj_EeKQqZMBCFd2Uw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnqcNj_EeKQqZMBCFd2Uw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P5J4iNj_EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4idj_EeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_kayJgNj_EeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_kaf1oNj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kayJgdj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4itj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4i9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4jNj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4jdj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4jtj_EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4j9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4kNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4kdj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4ktj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4k9j_EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4lNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4ldj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4ltj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4l9j_EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_P4xeANj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4gdj_EeKQqZMBCFd2Uw" x="528" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_M3hWsNkDEeKQqZMBCFd2Uw" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWstkDEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWs9kDEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWtNkDEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWtdkDEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWttkDEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWt9kDEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_M3hWuNkDEeKQqZMBCFd2Uw" type="5038"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M3hWsdkDEeKQqZMBCFd2Uw" x="246" y="180"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a8TPANqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8TPAtqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8TPA9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8ZVoNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8ZVodqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8ZVotqCEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8ZVo9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8ZVpNqCEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVpdqCEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVptqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVp9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVqNqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVqdqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVqtqCEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVq9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVrNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVrdqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVrtqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVr9qCEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVsNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVsdqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVstqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVs9qCEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_zYGE8NqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8TPAdqCEeKQqZMBCFd2Uw" x="24" y="540"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a8fcQNqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcQtqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcQ9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcRNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcRdqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcRtqCEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcR9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8fcSNqCEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcSdqCEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcStqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcS9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcTNqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcTdqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcTtqCEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcT9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcUNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcUdqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcUtqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcU9qCEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcVNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcVdqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcVtqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcV9qCEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcQdqCEeKQqZMBCFd2Uw" x="384" y="540" width="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xiCs0NqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs0tqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs09qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs1NqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs1dqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs1tqCEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs19qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xiCs2NqCEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs2dqCEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs2tqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs29qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs3NqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs3dqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs3tqCEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs39qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs4NqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs4dqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs4tqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs49qCEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs5NqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs5dqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs5tqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs59qCEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_xhwY8NqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs0dqCEeKQqZMBCFd2Uw" x="258" y="681" width="179"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_z5FcsNqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FcstqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5Fcs9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FctNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5FctdqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FcttqCEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5Fct9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z5FcuNqCEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z5FcudqCEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z5FcutqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z5Fcu9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcvNqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcvdqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z5FcvtqCEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z5Fcv9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z5FcwNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcwdqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcwtqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z5Fcw9qCEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z5FcxNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z5FcxdqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcxtqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5Fcx9qCEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_z4m7kNqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcsdqCEeKQqZMBCFd2Uw" x="552" y="684" width="170"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_-aAtodjpEeKQqZMBCFd2Uw"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_NV6sQNjqEeKQqZMBCFd2Uw" type="4001" source="_Atmg4NjqEeKQqZMBCFd2Uw" target="_ERoBQNjqEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sQ9jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sRNjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sRdjqEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sRtjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sR9jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sSNjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sSdjqEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sStjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sS9jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sTNjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sTdjqEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sTtjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NV6sQdjqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_NVcLINjqEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NV6sQtjqEeKQqZMBCFd2Uw" points="[5, 6, -474, 49]$[486, 6, 7, 49]$[486, -38, 7, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NWAy4NjqEeKQqZMBCFd2Uw" id="(0.984,0.6498194945848376)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NWAy4djqEeKQqZMBCFd2Uw" id="(0.38235294117647056,0.9596774193548387)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZdgJINjqEeKQqZMBCFd2Uw" type="4001" source="_ItfvoNjqEeKQqZMBCFd2Uw" target="_ERoBQNjqEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJI9jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJJNjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJJdjqEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJJtjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJJ9jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJKNjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJKdjqEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJKtjqEeKQqZMBCFd2Uw" x="-31" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJK9jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJLNjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJLdjqEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJLtjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZdgJIdjqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_ZdBoANjqEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZdgJItjqEeKQqZMBCFd2Uw" points="[6, 8, -83, 0]$[83, 8, -6, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZdmPwNjqEeKQqZMBCFd2Uw" id="(0.991304347826087,0.6347826086956522)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZdmPwdjqEeKQqZMBCFd2Uw" id="(0.03529411764705882,0.5483870967741935)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_m0GW0NjqEeKQqZMBCFd2Uw" type="4001" source="_hhHaQNjqEeKQqZMBCFd2Uw" target="_ItfvoNjqEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW09jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW1NjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW1djqEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW1tjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW19jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW2NjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW2djqEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW2tjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW29jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW3NjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW3djqEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW3tjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_m0GW0djqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_mzt8UNjqEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m0GW0tjqEeKQqZMBCFd2Uw" points="[10, 0, -74, 0]$[78, -1, -6, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m0MdcNjqEeKQqZMBCFd2Uw" id="(0.9856115107913669,0.4596774193548387)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m0MdcdjqEeKQqZMBCFd2Uw" id="(0.05217391304347826,0.4881889763779528)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_HTx-INj_EeKQqZMBCFd2Uw" type="4001" source="_HTfqQNj_EeKQqZMBCFd2Uw" target="_P5J4gNj_EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-I9j_EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-JNj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Jdj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Jtj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-J9j_EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-KNj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Kdj_EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Ktj_EeKQqZMBCFd2Uw" x="-26" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-K9j_EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-LNj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Ldj_EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Ltj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HTx-Idj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_2bADINj-EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HTx-Itj_EeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TJzJ4Nj_EeKQqZMBCFd2Uw" id="(0.025423728813559324,0.4596774193548387)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JiaY4Nj_EeKQqZMBCFd2Uw" type="4001" source="_Atmg4NjqEeKQqZMBCFd2Uw" target="_HTfqQNj_EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JiaY49j_EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfgNj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfgdj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfgtj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfg9j_EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfhNj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfhdj_EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfhtj_EeKQqZMBCFd2Uw" x="-26" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfh9j_EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfiNj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfidj_EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfitj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JiaY4dj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_Jh73wNj_EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JiaY4tj_EeKQqZMBCFd2Uw" points="[6, 1, -141, -26]$[139, 21, -8, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JimmINj_EeKQqZMBCFd2Uw" id="(0.952,0.8916967509025271)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JimmIdj_EeKQqZMBCFd2Uw" id="(0.08,0.22)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_U1kIINj_EeKQqZMBCFd2Uw" type="4001" source="_P5J4gNj_EeKQqZMBCFd2Uw" target="_HTlw5dj_EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1kvMNj_EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1kvMdj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWQNj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWQdj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWQtj_EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWQ9j_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWRNj_EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWRdj_EeKQqZMBCFd2Uw" x="-19" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWRtj_EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWR9j_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWSNj_EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWSdj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_U1kIIdj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_U1FnANj_EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_U1kIItj_EeKQqZMBCFd2Uw" points="[6, -1, -127, 19]$[122, -25, -11, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U1srANj_EeKQqZMBCFd2Uw" id="(0.9491525423728814,0.42)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U1srAdj_EeKQqZMBCFd2Uw" id="(0.06,0.48)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_o2GW4NkCEeKQqZMBCFd2Uw" type="4001" source="_ERoBQNjqEeKQqZMBCFd2Uw" target="_HTlw5dj_EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2GW49kCEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW5NkCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2GW5dkCEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW5tkCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2GW59kCEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW6NkCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2MdgNkCEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2MdgdkCEeKQqZMBCFd2Uw" x="-3" y="45"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2MdgtkCEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2Mdg9kCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2MdhNkCEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2MdhdkCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_o2GW4dkCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_L2X8oNhcEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_o2GW4tkCEeKQqZMBCFd2Uw" points="[15, 62, -40, -159]$[42, 171, -13, -50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p5Y_4NkCEeKQqZMBCFd2Uw" id="(0.8176470588235294,0.9354838709677419)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_a8li4NqCEeKQqZMBCFd2Uw" type="4001" source="_a8TPANqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li49qCEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li5NqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li5dqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li5tqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li59qCEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li6NqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li6dqCEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li6tqCEeKQqZMBCFd2Uw" x="-45" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li69qCEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li7NqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li7dqCEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li7tqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_a8li4dqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_Tz2loNqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a8li4tqCEeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ii_TkNqCEeKQqZMBCFd2Uw" type="4001" source="_a8fcQNqCEeKQqZMBCFd2Uw" target="_Atmg4NjqEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaMNqCEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaMdqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaMtqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaM9qCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaNNqCEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaNdqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaNtqCEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaN9qCEeKQqZMBCFd2Uw" x="54" y="94"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaONqCEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaOdqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaOtqCEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaO9qCEeKQqZMBCFd2Uw" x="48" y="-35"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ii_TkdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_iim5ENqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ii_TktqCEeKQqZMBCFd2Uw" points="[0, -12, 340, 174]$[0, -96, 340, 90]$[-334, -96, 6, 90]$[-334, -179, 6, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ijLg0NqCEeKQqZMBCFd2Uw" id="(0.38095238095238093,0.12)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ijLg0dqCEeKQqZMBCFd2Uw" id="(0.4692737430167598,0.9747292418772563)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3e3QkNqCEeKQqZMBCFd2Uw" type="4002" source="_xiCs0NqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3e3Qk9qCEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3e3QlNqCEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3e3QkdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_3ee2ENqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3e3QktqCEeKQqZMBCFd2Uw" points="[10, -8, -68, 52]$[69, -49, -9, 11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3e3QldqCEeKQqZMBCFd2Uw" id="(0.6089385474860335,0.08)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3e3QltqCEeKQqZMBCFd2Uw" id="(0.3370165745856354,0.89)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5SH98NqCEeKQqZMBCFd2Uw" type="4002" source="_z5FcsNqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5SH989qCEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5SH99NqCEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5SH98dqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_5RvjcNqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5SH98tqCEeKQqZMBCFd2Uw" points="[-14, -7, 97, 52]$[-108, -51, 3, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5SOEkNqCEeKQqZMBCFd2Uw" id="(0.3,0.07)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5SOEkdqCEeKQqZMBCFd2Uw" id="(0.5966850828729282,0.92)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_gSkRsNxGEeKwptaAAanMDg" type="PapyrusUMLClassDiagram" name="exceptions" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_iYyXUNxGEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYy-YNxGEeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYy-YdxGEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYzlcNxGEeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYzlcdxGEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYzlctxGEeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYzlc9xGEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qcdS09xGEeKwptaAAanMDg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1NxGEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1dxGEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1txGEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS19xGEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS2NxGEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iYzldNxGEeKwptaAAanMDg" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iY0MgNxGEeKwptaAAanMDg" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iY0MgdxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iY0MgtxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iY0Mg9xGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iY0MhNxGEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iY0MhdxGEeKwptaAAanMDg" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iY0MhtxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iY0Mh9xGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iY0MiNxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iY0MidxGEeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_iYKFMNxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iYyXUdxGEeKwptaAAanMDg" x="263" y="39" width="140"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_k-76MNxGEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76MtxGEeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76M9xGEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76NNxGEeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76NdxGEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76NtxGEeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76N9xGEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4SAtY9xGEeKwptaAAanMDg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZNxGEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZdxGEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZtxGEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZ9xGEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtaNxGEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_k-76ONxGEeKwptaAAanMDg" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_k-76OdxGEeKwptaAAanMDg" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k-76OtxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k-76O9xGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k-76PNxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76PdxGEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_k-76PtxGEeKwptaAAanMDg" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k-76P9xGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k-76QNxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k-76QdxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76QtxGEeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_k-dZENxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76MdxGEeKwptaAAanMDg" x="444" y="186" width="141"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KHZoUNxMEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoUtxMEeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoU9xMEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoVNxMEeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoVdxMEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoVtxMEeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoV9xMEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PWnfMNxMEeKwptaAAanMDg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfMdxMEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfMtxMEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfM9xMEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfNNxMEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfNdxMEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KHZoWNxMEeKwptaAAanMDg" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KHZoWdxMEeKwptaAAanMDg" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_KHZoWtxMEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_KHZoW9xMEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_KHZoXNxMEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoXdxMEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KHZoXtxMEeKwptaAAanMDg" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_KHZoX9xMEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_KHZoYNxMEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_KHZoYdxMEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoYtxMEeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_KG7HMNxMEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoUdxMEeKwptaAAanMDg" x="72" y="192" width="145"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_gSkRsdxGEeKwptaAAanMDg"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ox-G8NxGEeKwptaAAanMDg" type="4002" source="_k-76MNxGEeKwptaAAanMDg" target="_iYyXUNxGEeKwptaAAanMDg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ox_VENxGEeKwptaAAanMDg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ox_VEdxGEeKwptaAAanMDg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ox-G8dxGEeKwptaAAanMDg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_oxlscNxGEeKwptaAAanMDg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ox-G8txGEeKwptaAAanMDg" points="[-10, -5, 124, 68]$[-128, -61, 6, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oyDmgNxGEeKwptaAAanMDg" id="(0.2978723404255319,0.054945054945054944)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oyDmgdxGEeKwptaAAanMDg" id="(0.6357142857142857,0.8681318681318682)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ShmNcNxMEeKwptaAAanMDg" type="4002" source="_KHZoUNxMEeKwptaAAanMDg" target="_iYyXUNxGEeKwptaAAanMDg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ShmNc9xMEeKwptaAAanMDg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ShmNdNxMEeKwptaAAanMDg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ShmNcdxMEeKwptaAAanMDg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ShHsUNxMEeKwptaAAanMDg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ShmNctxMEeKwptaAAanMDg" points="[12, -8, -83, 52]$[82, -50, -13, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ShsUENxMEeKwptaAAanMDg" id="(0.7517241379310344,0.07207207207207207)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ShsUEdxMEeKwptaAAanMDg" id="(0.09285714285714286,0.9099099099099099)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_j4XzEOT_EeKSDdPH_NXL-g" type="PapyrusUMLClassDiagram" name="Appearance Properties" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_ruaiQOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo4eT_EeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo4uT_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo4-T_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo5OT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo5eT_EeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo5uT_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rugo5-T_EeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rugo6OT_EeKSDdPH_NXL-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rugo6eT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rugo6uT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo6-T_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo7OT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rugo7eT_EeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rugo7uT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rugo7-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo8OT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo8eT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rugo8uT_EeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rugo8-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rugo9OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo9eT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo9uT_EeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo4OT_EeKSDdPH_NXL-g" x="294" y="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tBcQYOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQYuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQY-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQZOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQZeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQZuT_EeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQZ-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tBcQaOT_EeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQaeT_EeKSDdPH_NXL-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQauT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQa-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQbOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQbeT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQbuT_EeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQb-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQcOT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQceT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQcuT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQc-T_EeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQdOT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQdeT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQduT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQd-T_EeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQYeT_EeKSDdPH_NXL-g" x="696" y="65"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tjX4wOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" fillColor="15053796" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4wuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4w-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4xOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4xeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4xuT_EeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4x-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tjX4yOT_EeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tjX4yeT_EeKSDdPH_NXL-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tjX4yuT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tjX4y-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX4zOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX4zeT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tjX4zuT_EeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tjX4z-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tjX40OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX40eT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX40uT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tjX40-T_EeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tjX41OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tjX41eT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX41uT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX41-T_EeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ti_eQOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX4weT_EeKSDdPH_NXL-g" x="726" y="215"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vkxIwOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIwuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIw-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIxOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIxeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIxuT_EeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIx-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vkxIyOT_EeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vkxIyeT_EeKSDdPH_NXL-g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_VwHpgOUAEeKSDdPH_NXL-g" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_Q8HvAOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VwHpgeUAEeKSDdPH_NXL-g" x="15"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vkxIyuT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vkxIy-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxIzOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxIzeT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vkxIzuT_EeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vkxIz-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vkxI0OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxI0eT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxI0uT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vkxI0-T_EeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vkxI1OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vkxI1eT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxI1uT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxI1-T_EeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_vkSnoOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxIweT_EeKSDdPH_NXL-g" x="192" y="209" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fMVFQOUAEeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFQuUAEeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFQ-UAEeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFROUAEeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFReUAEeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFRuUAEeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFR-UAEeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fMVFSOUAEeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFSeUAEeKSDdPH_NXL-g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_p9Xl8OUAEeKSDdPH_NXL-g" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_nVngkOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_p9Xl8eUAEeKSDdPH_NXL-g" x="39" y="11"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFSuUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFS-UAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFTOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFTeUAEeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFTuUAEeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFT-UAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFUOUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFUeUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFUuUAEeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFU-UAEeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFVOUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFVeUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFVuUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFV-UAEeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_fL2kIOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFQeUAEeKSDdPH_NXL-g" x="390" y="209" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gsWtkOUAEeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsWtkuUAEeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsWtk-UAEeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsWtlOUAEeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsc0MOUAEeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsc0MeUAEeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsc0MuUAEeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gsc0M-UAEeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0NOUAEeKSDdPH_NXL-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0NeUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0NuUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0N-UAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0OOUAEeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0OeUAEeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0OuUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0O-UAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0POUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0PeUAEeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0PuUAEeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0P-UAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0QOUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0QeUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0QuUAEeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_gsEZsOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsWtkeUAEeKSDdPH_NXL-g" x="604" y="217"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Rn740O-YEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn740u-YEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn740--YEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn741O-YEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn741e-YEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn741u-YEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn741--YEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Rn742O-YEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rn742e-YEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Rn742u-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Rn742--YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn743O-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn743e-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rn743u-YEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Rn743--YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Rn744O-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn744e-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn744u-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rn744--YEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Rn745O-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Rn745e-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn745u-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn745--YEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_RnjeUO-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn740e-YEeK0p4PkXjd-_Q" x="651" y="379"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZHO78O-YEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO78u-YEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO78--YEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO79O-YEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO79e-YEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO79u-YEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO79--YEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZHO7-O-YEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO7-e-YEeK0p4PkXjd-_Q" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_vpscQO-YEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_vpaIYO-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vpscQe-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yrtbwO-YEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_yrVBQO-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yrtbwe-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO7-u-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO7---YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO7_O-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO7_e-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO7_u-YEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO7_--YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO8AO-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO8Ae-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO8Au-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO8A--YEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO8BO-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO8Be-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO8Bu-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO8B--YEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ZGwa0O-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO78e-YEeK0p4PkXjd-_Q" y="204" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Ot3I0O-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I0u-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I0--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I1O-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I1e-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I1u-iEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I1--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ot3I2O-iEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I2e-iEeK0p4PkXjd-_Q" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_XmGU0O-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_Xlt6UO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XmGU0e-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bEXygO-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_bD8UsO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bEXyge-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eqEG0O-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_epxy8O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eqEG0e-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_indJcO-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_inEu8O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_indJce-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I2u-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I2--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I3O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I3e-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I3u-iEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I3--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I4O-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I4e-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I4u-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I4--iEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I5O-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I5e-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I5u-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I5--iEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_OtShEO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I0e-iEeK0p4PkXjd-_Q" x="148" y="374"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Q7FOUO-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOUu-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOU--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOVO-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOVe-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOVu-iEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOV--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q7FOWO-iEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOWe-iEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOWu-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOW--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOXO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOXe-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOXu-iEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOX--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOYO-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOYe-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOYu-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOY--iEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOZO-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOZe-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOZu-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOZ--iEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Q6ta4O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOUe-iEeK0p4PkXjd-_Q" x="799" y="398"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_j4XzEeT_EeKSDdPH_NXL-g"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_YC914OUAEeKSDdPH_NXL-g" type="4002" source="_vkxIwOT_EeKSDdPH_NXL-g" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YDD8gOUAEeKSDdPH_NXL-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YDD8geUAEeKSDdPH_NXL-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YC914eUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_YCxooOUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YC914uUAEeKSDdPH_NXL-g" points="[5, -13, -35, 79]$[34, -80, -6, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YDD8guUAEeKSDdPH_NXL-g" id="(0.5779816513761468,0.125)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YDD8g-UAEeKSDdPH_NXL-g" id="(0.31,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Y03M4OUAEeKSDdPH_NXL-g" type="4002" source="_tjX4wOT_EeKSDdPH_NXL-g" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y09TgOUAEeKSDdPH_NXL-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Y09TgeUAEeKSDdPH_NXL-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Y03M4eUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_Y0k5AOUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y03M4uUAEeKSDdPH_NXL-g" points="[-22, -7, 246, 68]$[-252, -60, 16, 15]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y09TguUAEeKSDdPH_NXL-g" id="(0.22,0.08)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y09Tg-UAEeKSDdPH_NXL-g" id="(0.3,0.77)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_iqWrUOUAEeKSDdPH_NXL-g" type="4002" source="_gsWtkOUAEeKSDdPH_NXL-g" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_iqcx8OUAEeKSDdPH_NXL-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iqcx8eUAEeKSDdPH_NXL-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iqWrUeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ip-Q0OUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iqWrUuUAEeKSDdPH_NXL-g" points="[11, -9, -112, 88]$[114, -92, -9, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iqgcUOUAEeKSDdPH_NXL-g" id="(0.38,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iqgcUeUAEeKSDdPH_NXL-g" id="(0.09,0.75)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jXrEUOUAEeKSDdPH_NXL-g" type="4002" source="_fMVFQOUAEeKSDdPH_NXL-g" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jXrEU-UAEeKSDdPH_NXL-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jXrEVOUAEeKSDdPH_NXL-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_jXrEUeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_jXYwcOUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jXrEUuUAEeKSDdPH_NXL-g" points="[-6, -9, 45, 75]$[-47, -72, 4, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jXrEVeUAEeKSDdPH_NXL-g" id="(0.36,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jXrEVuUAEeKSDdPH_NXL-g" id="(0.65,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uUewIOUAEeKSDdPH_NXL-g" type="4001" source="_fMVFQOUAEeKSDdPH_NXL-g" target="_vkxIwOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUfXMOUAEeKSDdPH_NXL-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUfXMeUAEeKSDdPH_NXL-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUfXMuUAEeKSDdPH_NXL-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUfXM-UAEeKSDdPH_NXL-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUf-QOUAEeKSDdPH_NXL-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-QeUAEeKSDdPH_NXL-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUf-QuUAEeKSDdPH_NXL-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-Q-UAEeKSDdPH_NXL-g" x="-16" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUf-ROUAEeKSDdPH_NXL-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-ReUAEeKSDdPH_NXL-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUf-RuUAEeKSDdPH_NXL-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-R-UAEeKSDdPH_NXL-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uUewIeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_uTre4OUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUewIuUAEeKSDdPH_NXL-g" points="[-1, 1, 73, 0]$[-72, 0, 2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uUohIOUAEeKSDdPH_NXL-g" id="(0.009174311926605505,0.4175824175824176)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uUohIeUAEeKSDdPH_NXL-g" id="(0.981651376146789,0.42857142857142855)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_UJZI8O-YEeK0p4PkXjd-_Q" type="4002" source="_Rn740O-YEeK0p4PkXjd-_Q" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UJZI8--YEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UJZI9O-YEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UJZI8e-YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_UJAucO-YEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UJZI8u-YEeK0p4PkXjd-_Q" points="[0, -10, -17, 231]$[5, -224, -12, 17]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UJfPkO-YEeK0p4PkXjd-_Q" id="(0.56,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UJfPke-YEeK0p4PkXjd-_Q" id="(0.28,0.83)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ikHGEO-YEeK0p4PkXjd-_Q" type="4002" source="_ZHO78O-YEeK0p4PkXjd-_Q" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ikHGE--YEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ikHGFO-YEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ikHGEe-YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ijurkO-YEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ikHGEu-YEeK0p4PkXjd-_Q" points="[0, -6, -30, 236]$[30, -233, 0, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ikNMsO-YEeK0p4PkXjd-_Q" id="(0.67,0.06)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ikNMse-YEeK0p4PkXjd-_Q" id="(0.51,0.91)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_UKjbAO-iEeK0p4PkXjd-_Q" type="4002" source="_Q7FOUO-iEeK0p4PkXjd-_Q" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UKjbA--iEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UKjbBO-iEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UKjbAe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_UKLAgO-iEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UKjbAu-iEeK0p4PkXjd-_Q" points="[-2, -6, 76, 246]$[-75, -239, 3, 13]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UKjbBe-iEeK0p4PkXjd-_Q" id="(0.35,0.06)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UKjbBu-iEeK0p4PkXjd-_Q" id="(0.6,0.87)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_VIS1oO-iEeK0p4PkXjd-_Q" type="4002" source="_Ot3I0O-iEeK0p4PkXjd-_Q" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VIY8QO-iEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VIY8Qe-iEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_VIS1oe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_VH6bIO-iEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VIS1ou-iEeK0p4PkXjd-_Q" points="[6, -13, -118, 222]$[124, -227, 0, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VId0wO-iEeK0p4PkXjd-_Q" id="(0.76,0.13)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VId0we-iEeK0p4PkXjd-_Q" id="(0.54,0.92)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_UCFqMO3vEeKwLp35IbAIig" type="PapyrusUMLClassDiagram" name="PropertySetter" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_aL5hEO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hEu3vEeKwLp35IbAIig" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hE-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hFO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hFe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hFu3vEeKwLp35IbAIig" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hF-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aL5hGO3vEeKwLp35IbAIig" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nsO3vEeKwLp35IbAIig" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aL_nse3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nsu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_ns-3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_ntO3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nte3vEeKwLp35IbAIig" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aL_ntu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nt-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_nuO3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_nue3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nuu3vEeKwLp35IbAIig" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aL_nu-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nvO3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_nve3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_nvu3vEeKwLp35IbAIig"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_DN8s0NjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL5hEe3vEeKwLp35IbAIig" x="96" y="30"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aMFuUO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuUu3vEeKwLp35IbAIig" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuU-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuVO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuVe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuVu3vEeKwLp35IbAIig" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuV-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMFuWO3vEeKwLp35IbAIig" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuWe3vEeKwLp35IbAIig" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuWu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuW-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuXO3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuXe3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuXu3vEeKwLp35IbAIig" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_L7eCkO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_L7LusO5WEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L7eCke5WEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kD_hwO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_fF4pAO5WEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kD_hwe5WEeK0p4PkXjd-_Q" x="61" y="25"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mDO1oO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_mCwUgO5WEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mDO1oe5WEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuX-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuYO3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuYe3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuYu3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuY-3vEeKwLp35IbAIig" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuZO3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuZe3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuZu3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuZ-3vEeKwLp35IbAIig"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_q85OgO3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuUe3vEeKwLp35IbAIig" x="96" y="198"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fyt_oO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_ou3vEeKwLp35IbAIig" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_o-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_pO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_pe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_pu3vEeKwLp35IbAIig" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_p-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fyt_qO3vEeKwLp35IbAIig" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fyt_qe3vEeKwLp35IbAIig" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_p4HscO5qEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_p3vR8O5qEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_p4Hsce5qEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fyt_qu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fyt_q-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fyt_rO3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_re3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fyt_ru3vEeKwLp35IbAIig" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_GQIF0O5VEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_GOgVMO5VEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GQIF0e5VEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fyt_r-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fyt_sO3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fyt_se3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_su3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fy0GQO3vEeKwLp35IbAIig" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fy0GQe3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fy0GQu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fy0GQ-3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fy0GRO3vEeKwLp35IbAIig"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_fyVlIO3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_oe3vEeKwLp35IbAIig" x="96" y="438"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_28aOsO5VEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVUO5VEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVUe5VEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVUu5VEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVU-5VEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVVO5VEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVVe5VEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_28gVVu5VEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_28mb8O5VEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_28mb8e5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_28mb8u5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb8-5VEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb9O5VEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_28mb9e5VEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_28mb9u5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_28mb9-5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb-O5VEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb-e5VEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_28mb-u5VEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_28mb--5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_28mb_O5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb_e5VEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb_u5VEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28aOse5VEeK0p4PkXjd-_Q" x="492" y="444"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_R-02sO5XEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02su5XEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02s-5XEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02tO5XEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02te5XEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02tu5XEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02t-5XEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_R-02uO5XEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_R-02ue5XEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_R-02uu5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_R-02u-5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02vO5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02ve5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_R-02vu5XEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_R-02v-5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_R-02wO5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02we5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02wu5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_R-02w-5XEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_R-02xO5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_R-02xe5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02xu5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02x-5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_R-WVkO5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02se5XEeK0p4PkXjd-_Q" x="24" y="611"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UfT2cO5XEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2cu5XEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2c-5XEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2dO5XEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2de5XEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2du5XEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2d-5XEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UfT2eO5XEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2ee5XEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2eu5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2e-5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2fO5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2fe5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2fu5XEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2f-5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2gO5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2ge5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2gu5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2g-5XEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2hO5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2he5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2hu5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2h-5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Ue7b8O5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2ce5XEeK0p4PkXjd-_Q" x="222" y="612"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JSk6cO5mEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6cu5mEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6c-5mEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6dO5mEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6de5mEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6du5mEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6d-5mEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cyvucO5mEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvuce5mEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvucu5mEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EClass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvuc-5mEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvudO5mEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvude5mEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JSk6eO5mEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6ee5mEeK0p4PkXjd-_Q" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_NCGgMO5mEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_NBuFsO5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NCGgMe5mEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6eu5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6e-5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6fO5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6fe5mEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6fu5mEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6f-5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6gO5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6ge5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6gu5mEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6g-5mEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6hO5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6he5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6hu5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6h-5mEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_JSMf8O5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6ce5mEeK0p4PkXjd-_Q" x="528" y="210"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-0YU4O5zEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU4u5zEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU4-5zEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU5O5zEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU5e5zEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU5u5zEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU5-5zEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-0YU6O5zEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU6e5zEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU6u5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU6-5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU7O5zEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU7e5zEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU7u5zEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU7-5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU8O5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU8e5zEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU8u5zEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU8-5zEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU9O5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU9e5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU9u5zEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU9-5zEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-z_6YO5zEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU4e5zEeK0p4PkXjd-_Q" x="420" y="612"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JhQv0O-cEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv0u-cEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv0--cEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv1O-cEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv1e-cEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv1u-cEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv1--cEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JhQv2O-cEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv2e-cEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv2u-cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv2--cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv3O-cEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv3e-cEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv3u-cEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv3--cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv4O-cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv4e-cEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv4u-cEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv4--cEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv5O-cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv5e-cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv5u-cEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv5--cEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_JgyOsO-cEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv0e-cEeK0p4PkXjd-_Q" x="120" y="726"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GwJEUO-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEUu-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEU--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEVO-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEVe-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEVu-iEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEV--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GwJEWO-iEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEWe-iEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEWu-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEW--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEXO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEXe-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEXu-iEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEX--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEYO-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEYe-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEYu-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEY--iEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEZO-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEZe-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEZu-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEZ--iEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Gvwp0O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEUe-iEeK0p4PkXjd-_Q" x="315" y="763"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xaib4O-lEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xajqAO-lEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4IO-lEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xak4Ie-lEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4Iu-lEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xak4I--lEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4JO-lEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xak4Je-lEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xalfMO-lEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xalfMe-lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xalfMu-lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfM--lEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfNO-lEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xalfNe-lEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xalfNu-lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xalfN--lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfOO-lEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfOe-lEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xalfOu-lEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xalfO--lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xalfPO-lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfPe-lEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfPu-lEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_xZ-bMO-lEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xaib4e-lEeK0p4PkXjd-_Q" x="509" y="764"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XyHrUBZ1EeOZwp016gnCFQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrUhZ1EeOZwp016gnCFQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrUxZ1EeOZwp016gnCFQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrVBZ1EeOZwp016gnCFQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrVRZ1EeOZwp016gnCFQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrVhZ1EeOZwp016gnCFQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrVxZ1EeOZwp016gnCFQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XyHrWBZ1EeOZwp016gnCFQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrWRZ1EeOZwp016gnCFQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrWhZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrWxZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrXBZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrXRZ1EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrXhZ1EeOZwp016gnCFQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrXxZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrYBZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrYRZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrYhZ1EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrYxZ1EeOZwp016gnCFQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrZBZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrZRZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrZhZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrZxZ1EeOZwp016gnCFQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Xxh1cBZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrURZ1EeOZwp016gnCFQ" x="644" y="622"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_UCFqMe3vEeKwLp35IbAIig"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_aMR7kO3vEeKwLp35IbAIig" type="4001" source="_aL5hEO3vEeKwLp35IbAIig" target="_aMFuUO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7k-3vEeKwLp35IbAIig" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7lO3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7le3vEeKwLp35IbAIig" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7lu3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7l-3vEeKwLp35IbAIig" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7mO3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7me3vEeKwLp35IbAIig" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7mu3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7m-3vEeKwLp35IbAIig" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7nO3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7ne3vEeKwLp35IbAIig" visible="false" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7nu3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aMR7ke3vEeKwLp35IbAIig" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_3GHqIO3uEeKwLp35IbAIig"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aMR7ku3vEeKwLp35IbAIig" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_iQEy4O3vEeKwLp35IbAIig" type="4001" source="_aMFuUO3vEeKwLp35IbAIig" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy4-3vEeKwLp35IbAIig" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy5O3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy5e3vEeKwLp35IbAIig" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy5u3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy5-3vEeKwLp35IbAIig" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy6O3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy6e3vEeKwLp35IbAIig" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy6u3vEeKwLp35IbAIig" y="65"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy6-3vEeKwLp35IbAIig" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy7O3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy7e3vEeKwLp35IbAIig" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy7u3vEeKwLp35IbAIig" x="-12" y="-31"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iQEy4e3vEeKwLp35IbAIig" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_iPmRwO3vEeKwLp35IbAIig"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iQEy4u3vEeKwLp35IbAIig" points="[-43, 56, 92, -120]$[-95, 124, 40, -52]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iQXGwO3vEeKwLp35IbAIig" id="(0.2196078431372549,0.8611111111111112)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iQXGwe3vEeKwLp35IbAIig" id="(0.2554112554112554,0.038461538461538464)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4DtN8O5VEeK0p4PkXjd-_Q" type="4001" source="_fyt_oO3vEeKwLp35IbAIig" target="_28aOsO5VEeK0p4PkXjd-_Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN8-5VEeK0p4PkXjd-_Q" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN9O5VEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN9e5VEeK0p4PkXjd-_Q" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN9u5VEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN9-5VEeK0p4PkXjd-_Q" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN-O5VEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN-e5VEeK0p4PkXjd-_Q" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN-u5VEeK0p4PkXjd-_Q" x="-33" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN--5VEeK0p4PkXjd-_Q" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN_O5VEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN_e5VEeK0p4PkXjd-_Q" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN_u5VEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4DtN8e5VEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_4DImMO5VEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4DtN8u5VEeK0p4PkXjd-_Q" points="[6, -7, -170, 0]$[171, -10, -5, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4D_h0O5VEeK0p4PkXjd-_Q" id="(0.974025974025974,0.40384615384615385)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4D_h0e5VEeK0p4PkXjd-_Q" id="(0.05,0.29)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Y9OMMO5XEeK0p4PkXjd-_Q" type="4002" source="_R-02sO5XEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y9US0O5XEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Y9US0e5XEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Y9OMMe5XEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_Y8pkcO5XEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y9OMMu5XEeK0p4PkXjd-_Q" points="[12, -10, -97, 77]$[103, -79, -6, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y9US0u5XEeK0p4PkXjd-_Q" id="(0.41739130434782606,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y9US0-5XEeK0p4PkXjd-_Q" id="(0.36796536796536794,0.9230769230769231)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZyK3MO5XEeK0p4PkXjd-_Q" type="4002" source="_UfT2cO5XEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZyK3M-5XEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZyK3NO5XEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZyK3Me5XEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ZxycsO5XEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZyK3Mu5XEeK0p4PkXjd-_Q" points="[-8, -12, 50, 76]$[-56, -82, 2, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyXEcO5XEeK0p4PkXjd-_Q" id="(0.4642857142857143,0.12)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyXEce5XEeK0p4PkXjd-_Q" id="(0.5757575757575758,0.9423076923076923)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QgWvwO5mEeK0p4PkXjd-_Q" type="4001" source="_JSk6cO5mEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgX94O5mEeK0p4PkXjd-_Q" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgX94e5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgX94u5mEeK0p4PkXjd-_Q" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgX94-5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgYk8O5mEeK0p4PkXjd-_Q" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk8e5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgYk8u5mEeK0p4PkXjd-_Q" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk8-5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgYk9O5mEeK0p4PkXjd-_Q" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk9e5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgYk9u5mEeK0p4PkXjd-_Q" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk9-5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_QgWvwe5mEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_QfvrwO5mEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QgWvwu5mEeK0p4PkXjd-_Q" points="[0, 15, 251, -111]$[0, 77, 251, -49]$[-251, 77, 0, -49]$[-251, 119, 0, -7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qghu4O5mEeK0p4PkXjd-_Q" id="(0.24342105263157895,0.8846153846153846)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qghu4e5mEeK0p4PkXjd-_Q" id="(0.9437229437229437,0.0673076923076923)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_hnJRkO5mEeK0p4PkXjd-_Q" type="4001" source="_aMFuUO3vEeKwLp35IbAIig" target="_JSk6cO5mEeK0p4PkXjd-_Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnJRk-5mEeK0p4PkXjd-_Q" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnJRlO5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYMO5mEeK0p4PkXjd-_Q" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYMe5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYMu5mEeK0p4PkXjd-_Q" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYM-5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYNO5mEeK0p4PkXjd-_Q" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYNe5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYNu5mEeK0p4PkXjd-_Q" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYN-5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYOO5mEeK0p4PkXjd-_Q" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYOe5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_hnJRke5mEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_hmkp0O5mEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hnJRku5mEeK0p4PkXjd-_Q" points="[3, 3, -87, 0]$[90, 3, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hnVe0O5mEeK0p4PkXjd-_Q" id="(0.9882352941176471,0.5625)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hnVe0e5mEeK0p4PkXjd-_Q" id="(0.0,0.532258064516129)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_CpMqUO50EeK0p4PkXjd-_Q" type="4002" source="_-0YU4O5zEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CpMqU-50EeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CpMqVO50EeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_CpMqUe50EeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_Co0P0O50EeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CpMqUu50EeK0p4PkXjd-_Q" points="[-23, -11, 134, 67]$[-145, -70, 12, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CpSw8O50EeK0p4PkXjd-_Q" id="(0.21951219512195122,0.11)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CpSw8e50EeK0p4PkXjd-_Q" id="(0.8398268398268398,0.9304347826086956)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QK9AoO-cEeK0p4PkXjd-_Q" type="4002" source="_JhQv0O-cEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QK-OwO-cEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QK-Owe-cEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_QK9nsO-cEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_QKhi0O-cEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QK9nse-cEeK0p4PkXjd-_Q" points="[1, -9, -24, 183]$[22, -182, -3, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QLCgMO-cEeK0p4PkXjd-_Q" id="(0.43902439024390244,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QLCgMe-cEeK0p4PkXjd-_Q" id="(0.4458874458874459,0.9130434782608695)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LuSZUO-iEeK0p4PkXjd-_Q" type="4002" source="_GwJEUO-iEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LuSZU--iEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LuSZVO-iEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LuSZUe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_LuAFcO-iEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LuSZUu-iEeK0p4PkXjd-_Q" points="[-7, -15, 94, 223]$[-85, -225, 16, 13]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LuYf8O-iEeK0p4PkXjd-_Q" id="(0.424,0.15)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LuYf8e-iEeK0p4PkXjd-_Q" id="(0.7402597402597403,0.8869565217391304)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_02FVsO-lEeK0p4PkXjd-_Q" type="4002" source="_xaib4O-lEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_02LcUO-lEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_02LcUe-lEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_02FVse-lEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_01zB0O-lEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_02FVsu-lEeK0p4PkXjd-_Q" points="[-7, -5, 274, 229]$[-252, -216, 29, 18]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_02LcUu-lEeK0p4PkXjd-_Q" id="(0.32,0.05)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_02LcU--lEeK0p4PkXjd-_Q" id="(0.7792207792207793,0.8434782608695652)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_a9MgMBZ1EeOZwp016gnCFQ" type="4002" source="_XyHrUBZ1EeOZwp016gnCFQ" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_a9MgMxZ1EeOZwp016gnCFQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a9MgNBZ1EeOZwp016gnCFQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_a9MgMRZ1EeOZwp016gnCFQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_a8mqUBZ1EeOZwp016gnCFQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a9MgMhZ1EeOZwp016gnCFQ" points="[-31, -7, 335, 78]$[-352, -79, 14, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a9MgNRZ1EeOZwp016gnCFQ" id="(0.26515151515151514,0.07)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a9MgNhZ1EeOZwp016gnCFQ" id="(0.9393939393939394,0.9217391304347826)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Up8U8P91EeKlldop5b2mtw" type="PapyrusUMLClassDiagram" name="LayerOperators" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_mqw8QAkcEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq3C4AkcEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq3C4QkcEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq9JgAkcEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq9JgQkcEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq9JggkcEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq9JgwkcEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mq9JhAkcEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JhQkcEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_FKWlwAw_EeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#__XEYgAw-EeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FKWlwQw_EeOjX-JbGFEH7w" x="85" y="11"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JhgkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JhwkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JiAkcEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JiQkcEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JigkcEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_Dh-88AxDEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_Dhl7YAxDEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dh-88QxDEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0VwJkA3SEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_0VaLUA3SEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0VwJkQ3SEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JiwkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JjAkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JjQkcEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JjgkcEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JjwkcEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JkAkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JkQkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JkgkcEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JkwkcEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_WuVRUNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mqw8QQkcEeOnVqX9VcfeWQ" x="-162" y="246"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GLILsAkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILsgkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILswkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILtAkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILtQkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILtgkdEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILtwkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GLILuAkdEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GLILuQkdEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_ysgoIAkiEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_ysOUQAkiEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ysgoIQkiEeOnVqX9VcfeWQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GLILugkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GLILuwkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GLILvAkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLILvQkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GLOSUAkdEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_w6KWMAkhEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_w5x7sAkhEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w6KWMQkhEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T0Ap8AkiEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_TzuWEAkiEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0Ap8QkiEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_huCU0AkiEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_htp6UAkiEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_huCU0QkiEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_okYS0AkoEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_oj_4UAkoEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_okYS0QkoEeOnVqX9VcfeWQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GLOSUQkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GLOSUgkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GLOSUwkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLOSVAkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GLOSVQkdEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GLOSVgkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GLOSVwkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GLOSWAkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLOSWQkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_GKddUAkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLILsQkdEeOnVqX9VcfeWQ" x="288" y="222" width="391"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T6PAAAkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PAAgkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PAAwkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PABAkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PABQkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PABgkdEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PABwkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T6PACAkdEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T6PACQkdEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_TfenkAkmEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_TfMTsAkmEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TfenkQkmEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rUDAsA2fEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1yttEA2hEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yttEQ2hEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIA2hEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EReference"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIQ2hEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIg2hEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIw2hEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="layers.uml#_rTr0UA2fEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rUDAsQ2fEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T6PACgkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T6PACwkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PADAkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PADQkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T6PADgkdEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_ZkDggAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ZjkYUAkjEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZkDggQkjEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1LL0kAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_sQbgEAkjEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1LL0kQkjEeOnVqX9VcfeWQ" x="80" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6U7VkAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_6Ui7EAkjEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6U7VkQkjEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NyJjQAkkEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_HQzWIAkkEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJjQQkkEeOnVqX9VcfeWQ" x="69" y="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_U31MgAkkEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_U3cyAAkkEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U31MgQkkEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wq9owBKGEeO9e9pZ1EIGJg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_p1keQBKGEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wq9owRKGEeO9e9pZ1EIGJg" x="108" y="97"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T6PADwkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T6PAEAkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PAEQkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAEgkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T6PAEwkdEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T6PAFAkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T6PAFQkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PAFgkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAFwkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_T5we4AkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAAQkdEeOnVqX9VcfeWQ" x="294" y="-132"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wlZj8AkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj8gkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj8wkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj9AkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj9QkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj9gkdEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj9wkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wlZj-AkdEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wlZj-QkdEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_AmaP0AkmEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_8J3zEAklEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AmaP0QkmEeOnVqX9VcfeWQ" x="78" y="14"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wlZj-gkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wlZj-wkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZj_AkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZj_QkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wlZj_gkdEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_oF32EAkhEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_WKdZYAkhEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oF32EQkhEeOnVqX9VcfeWQ" x="77" y="23"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wlZj_wkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wlZkAAkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZkAQkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZkAgkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wlZkAwkdEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wlZkBAkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wlZkBQkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZkBgkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZkBwkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_wk7C0AkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZj8QkdEeOnVqX9VcfeWQ" x="822" y="222" width="138"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_G-_bIAkpEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bIgkpEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bIwkpEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bJAkpEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bJQkpEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bJgkpEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bJwkpEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G-_bKAkpEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bKQkpEeOnVqX9VcfeWQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bKgkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bKwkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bLAkpEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bLQkpEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bLgkpEeOnVqX9VcfeWQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bLwkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bMAkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bMQkpEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bMgkpEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bMwkpEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bNAkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bNQkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bNgkpEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bNwkpEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_G-g6AAkpEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bIQkpEeOnVqX9VcfeWQ" x="696" y="378"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ELjJgAkxEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJggkxEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJgwkxEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJhAkxEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJhQkxEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJhgkxEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJhwkxEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ELjJiAkxEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJiQkxEeOnVqX9VcfeWQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJigkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJiwkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJjAkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJjQkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJjgkxEeOnVqX9VcfeWQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJjwkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJkAkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJkQkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJkgkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJkwkxEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJlAkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJlQkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJlgkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJlwkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ELKvAAkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJgQkxEeOnVqX9VcfeWQ" x="246" y="492" width="208"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HyFLUAkxEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLUgkxEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyFLUwkxEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLVAkxEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyFLVQkxEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLVgkxEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyLR8AkxEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HyLR8QkxEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR8gkxEeOnVqX9VcfeWQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR8wkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR9AkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR9QkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLR9gkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR9wkxEeOnVqX9VcfeWQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR-AkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR-QkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR-gkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLR-wkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR_AkxEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR_QkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR_gkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR_wkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLSAAkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Hxsw0AkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyFLUQkxEeOnVqX9VcfeWQ" x="522" y="492" width="229"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_muS64AnsEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS64gnsEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS64wnsEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS65AnsEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS65QnsEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS65gnsEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS65wnsEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_muS66AnsEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_muS66QnsEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_zQxkAAnsEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_yEySAAnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zQxkAQnsEeOnVqX9VcfeWQ" x="59" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XTyfQAntEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_XTdvIAntEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XTyfQQntEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uNebYA3gEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_XwmlsA3gEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uNebYQ3gEeOjX-JbGFEH7w" x="54" y="45"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_muS66gnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_muS66wnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_muS67AnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS67QnsEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_muS67gnsEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_vb3hIA3gEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_vbiJ8A3gEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vb3hIQ3gEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_muS67wnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_muS68AnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_muS68QnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS68gnsEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_muS68wnsEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_muS69AnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_muS69QnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_muS69gnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS69wnsEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_mt6gYAnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS64QnsEeOnVqX9VcfeWQ" x="924" y="378" width="229" height="127"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_G71l8AxJEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l8gxJEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l8wxJEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l9AxJEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l9QxJEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l9gxJEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l9wxJEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G71l-AxJEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G71l-QxJEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G71l-gxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G71l-wxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G71l_AxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71l_QxJEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G71l_gxJEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G71l_wxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G71mAAxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G71mAQxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71mAgxJEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G71mAwxJEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G71mBAxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G71mBQxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G71mBgxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71mBwxJEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_G7XE0AxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71l8QxJEeOjX-JbGFEH7w" x="672" y="666" width="262"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LU3bsAxJEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3bsgxJEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3bswxJEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3btAxJEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3btQxJEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3btgxJEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3btwxJEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LU3buAxJEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LU3buQxJEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bugxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LU3buwxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bvAxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bvQxJEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LU3bvgxJEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bvwxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LU3bwAxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bwQxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bwgxJEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LU3bwwxJEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bxAxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LU3bxQxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bxgxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bxwxJEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_LUfBMAxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bsQxJEeOjX-JbGFEH7w" x="390" y="666" width="255"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__Arl4AxLEeOjX-JbGFEH7w" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__AsM8AxLEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0AAxLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__As0AQxLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0AgxLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__As0AwxLEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0BAxLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fy5gkAxMEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkQxMEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkgxMEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkwxMEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5glAxMEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5glQxMEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__As0BQxLEeOjX-JbGFEH7w" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__As0BgxLEeOjX-JbGFEH7w" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__As0BwxLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__As0CAxLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__As0CQxLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__As0CgxLEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__AtbEAxLEeOjX-JbGFEH7w" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__AtbEQxLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__AtbEgxLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__AtbEwxLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__AtbFAxLEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#__ADTwAxLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__Arl4QxLEeOjX-JbGFEH7w" x="1056" y="240" width="234"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Up8U8f91EeKlldop5b2mtw"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_KTjZoAkdEeOnVqX9VcfeWQ" type="4001" source="_mqw8QAkcEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTknwAkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO0AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTlO0QkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO0gkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTlO0wkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO1AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTlO1QkdEeOnVqX9VcfeWQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl14AkdEeOnVqX9VcfeWQ" x="-47" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTl14QkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl14gkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTl14wkdEeOnVqX9VcfeWQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl15AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_KTjZoQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_KSvhUAkdEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KTjZogkdEeOnVqX9VcfeWQ" points="[5, 6, -146, 0]$[151, 6, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTyqMAkdEeOnVqX9VcfeWQ" id="(0.9662162162162162,0.42)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTyqMQkdEeOnVqX9VcfeWQ" id="(0.0,0.42)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_X849IAkdEeOnVqX9VcfeWQ" type="4001" source="_T6PAAAkdEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849IwkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849JAkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849JQkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849JgkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849JwkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849KAkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849KQkdEeOnVqX9VcfeWQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849KgkdEeOnVqX9VcfeWQ" x="-2" y="56"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849KwkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849LAkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849LQkdEeOnVqX9VcfeWQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849LgkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_X849IQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_X8acAAkdEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_X849IgkdEeOnVqX9VcfeWQ" points="[-3, 5, 0, -56]$[-3, 60, 0, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X9FKYAkdEeOnVqX9VcfeWQ" id="(0.5089058524173028,0.9794871794871794)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X9FKYQkdEeOnVqX9VcfeWQ" id="(0.5133689839572193,0.01)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_32P7YAkdEeOnVqX9VcfeWQ" type="4001" source="_T6PAAAkdEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_32QicAkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJgAkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RJgQkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJggkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RJgwkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJhAkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RJhQkdEeOnVqX9VcfeWQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJhgkdEeOnVqX9VcfeWQ" x="1" y="-89"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RJhwkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RwkAkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RwkQkdEeOnVqX9VcfeWQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RwkgkdEeOnVqX9VcfeWQ" x="41" y="-66"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_32P7YQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_31lNAAkdEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_32P7YgkdEeOnVqX9VcfeWQ" points="[10, 0, -100, -121]$[116, 0, 6, -121]$[116, 117, 6, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_32aTcAkdEeOnVqX9VcfeWQ" id="(0.981651376146789,0.64)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_32a6gAkdEeOnVqX9VcfeWQ" id="(0.6521739130434783,0.038461538461538464)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5yYQ4AkdEeOnVqX9VcfeWQ" type="4001" source="_GLILsAkdEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ4wkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ5AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ5QkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ5gkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ5wkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ6AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ6QkdEeOnVqX9VcfeWQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ6gkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ6wkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ7AkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ7QkdEeOnVqX9VcfeWQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ7gkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5yYQ4QkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_5x5vwAkdEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5yYQ4gkdEeOnVqX9VcfeWQ" points="[9, 0, -194, -12]$[200, 12, -3, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ykeIAkdEeOnVqX9VcfeWQ" id="(0.983957219251337,0.3282051282051282)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ykeIQkdEeOnVqX9VcfeWQ" id="(0.021739130434782608,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LBOhgAkpEeOnVqX9VcfeWQ" type="4002" source="_G-_bIAkpEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBOhgwkpEeOnVqX9VcfeWQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBOhhAkpEeOnVqX9VcfeWQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LBOhgQkpEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_LAjzIAkpEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LBOhggkpEeOnVqX9VcfeWQ" points="[9, -8, -57, 50]$[60, -49, -6, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBUoIAkpEeOnVqX9VcfeWQ" id="(0.608433734939759,0.08)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBUoIQkpEeOnVqX9VcfeWQ" id="(0.2971014492753623,0.9217391304347826)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OOdY4AkxEeOnVqX9VcfeWQ" type="4002" source="_ELjJgAkxEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OOdY4wkxEeOnVqX9VcfeWQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OOdY5AkxEeOnVqX9VcfeWQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OOdY4QkxEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ON-3wAkxEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OOdY4gkxEeOnVqX9VcfeWQ" points="[7, -9, -86, 106]$[87, -104, -6, 11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OOjfgAkxEeOnVqX9VcfeWQ" id="(0.5048076923076923,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OOjfgQkxEeOnVqX9VcfeWQ" id="(0.2887700534759358,0.9371428571428572)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_PRQSoAkxEeOnVqX9VcfeWQ" type="4002" source="_HyFLUAkxEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PRQSowkxEeOnVqX9VcfeWQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PRQSpAkxEeOnVqX9VcfeWQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_PRQSoQkxEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_PQ9-wAkxEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PRQSogkxEeOnVqX9VcfeWQ" points="[-6, -10, 54, 109]$[-55, -105, 5, 14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PRWZQAkxEeOnVqX9VcfeWQ" id="(0.2183406113537118,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PRWZQQkxEeOnVqX9VcfeWQ" id="(0.6524064171122995,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_SfzL0AntEeOnVqX9VcfeWQ" type="4002" source="_muS64AnsEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Sf0Z8AntEeOnVqX9VcfeWQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Sf0Z8QntEeOnVqX9VcfeWQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_SfzL0QntEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_SfZjMAntEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SfzL0gntEeOnVqX9VcfeWQ" points="[-13, -10, 65, 50]$[-73, -51, 5, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sf4EUAntEeOnVqX9VcfeWQ" id="(0.4245810055865922,0.09615384615384616)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sf4EUQntEeOnVqX9VcfeWQ" id="(0.7246376811594203,0.9217391304347826)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_TziRIAxJEeOjX-JbGFEH7w" type="4002" source="_LU3bsAxJEeOjX-JbGFEH7w" target="_HyFLUAkxEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TziRIwxJEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TziRJAxJEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_TziRIQxJEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_TzDwAAxJEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TziRIgxJEeOjX-JbGFEH7w" points="[0, 0, 0, 74]$[0, -74, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TzoXwAxJEeOjX-JbGFEH7w" id="(0.7568627450980392,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TzoXwQxJEeOjX-JbGFEH7w" id="(0.2663755458515284,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_UrLDwAxJEeOjX-JbGFEH7w" type="4002" source="_G71l8AxJEeOjX-JbGFEH7w" target="_HyFLUAkxEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UrLDwwxJEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UrRKYAxJEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UrLDwQxJEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_Uq4v4AxJEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UrLDwgxJEeOjX-JbGFEH7w" points="[0, 0, 0, 74]$[0, -74, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UrRKYQxJEeOjX-JbGFEH7w" id="(0.14885496183206107,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UrRKYgxJEeOjX-JbGFEH7w" id="(0.8253275109170306,1.0)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Vjf6UHbuEeOlpfB_tZS-QA" type="PapyrusUMLClassDiagram" name="LayersStack" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_bGfo0HbuEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo0XbuEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo0nbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo03buEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo1HbuEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo1XbuEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo1nbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfo13buEeOlpfB_tZS-QA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfo2HbuEeOlpfB_tZS-QA" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_bGfo2XbuEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_AWx_gNjuEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo2nbuEeOlpfB_tZS-QA" x="47" y="9"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfo23buEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_AW-MwNjuEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo3HbuEeOlpfB_tZS-QA" x="47" y="9"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfo3XbuEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo3nbuEeOlpfB_tZS-QA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo33buEeOlpfB_tZS-QA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo4HbuEeOlpfB_tZS-QA" key="StereotypeList" value="Ecore::EAttribute"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo4XbuEeOlpfB_tZS-QA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo4nbuEeOlpfB_tZS-QA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo43buEeOlpfB_tZS-QA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="layers.uml#_mCUIAAxEEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo5HbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfo5XbuEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_qaozIAxEEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo5nbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfo53buEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_xcbgQGQ7EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo6HbuEeOlpfB_tZS-QA" x="153" y="77"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_E2yuoHluEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_E2soAHluEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_E2yuoXluEeOlpfB_tZS-QA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfo6XbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfo6nbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfo63buEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfo7HbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfo7XbuEeOlpfB_tZS-QA" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_bGfo7nbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo73buEeOlpfB_tZS-QA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo8HbuEeOlpfB_tZS-QA" key="CustomAppearance_MaskValue" value="17160"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_VdSFsO7HEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo8XbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfo8nbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo83buEeOlpfB_tZS-QA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo9HbuEeOlpfB_tZS-QA" key="CustomAppearance_MaskValue" value="17160"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_xfz8UO7HEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo9XbuEeOlpfB_tZS-QA" x="93" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfo9nbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo93buEeOlpfB_tZS-QA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo-HbuEeOlpfB_tZS-QA" key="CustomAppearance_MaskValue" value="17160"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_x2PfUO7HEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo-XbuEeOlpfB_tZS-QA" x="93" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfo-nbuEeOlpfB_tZS-QA" type="3013" fontColor="8421504" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_Ps2L4GUaEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo-3buEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfo_HbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_kzSSwGUdEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo_XbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_g7BWwHbvEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_YeJ4IHbvEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g7BWwXbvEeOlpfB_tZS-QA" x="212" y="84"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VTiN4HluEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_VTcHQHluEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VTiN4XluEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XeS1QXluEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_XeS1QHluEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XeS1QnluEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XNTkMXl0EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_XNTkMHl0EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XNTkMnl0EeOlpfB_tZS-QA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfo_nbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfo_3buEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfpAHbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfpAXbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfpAnbuEeOlpfB_tZS-QA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfpA3buEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfpBHbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfpBXbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfpBnbuEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_9IaAANjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfpCnbuEeOlpfB_tZS-QA" x="546" y="132" width="481" height="349"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfp73buEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfp8HbuEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfp8XbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfp8nbuEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfp83buEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfp9HbuEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfp9XbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfp9nbuEeOlpfB_tZS-QA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfp93buEeOlpfB_tZS-QA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfp-HbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfp-XbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfp-nbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfp-3buEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfp_HbuEeOlpfB_tZS-QA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfp_XbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfp_nbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfp_3buEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqAHbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfqAXbuEeOlpfB_tZS-QA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfqAnbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfqA3buEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfqBHbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqBXbuEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqCXbuEeOlpfB_tZS-QA" x="690" y="30" height="45"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfqCnbuEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfqC3buEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfqDHbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfqDXbuEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfqDnbuEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfqD3buEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfqEHbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfqEXbuEeOlpfB_tZS-QA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfqEnbuEeOlpfB_tZS-QA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfqE3buEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfqFHbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfqFXbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqFnbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfqF3buEeOlpfB_tZS-QA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfqGHbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfqGXbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfqGnbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqG3buEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfqHHbuEeOlpfB_tZS-QA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfqHXbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfqHnbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfqH3buEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqIHbuEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqJHbuEeOlpfB_tZS-QA" x="774" y="576" width="115" height="193"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfq6HbuEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfq6XbuEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfq6nbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfq63buEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfq7HbuEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfq7XbuEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfq7nbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfq73buEeOlpfB_tZS-QA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfq8HbuEeOlpfB_tZS-QA" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_bGfq8XbuEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_ctvjINjwEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfq8nbuEeOlpfB_tZS-QA" x="58" y="16"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfq83buEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_ct7wYNjwEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfq9HbuEeOlpfB_tZS-QA" x="58" y="16"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fKXnwHl8EeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_c5OEgHl8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fKXnwXl8EeOlpfB_tZS-QA" x="112" y="67"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfq9XbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfq9nbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfq93buEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfq-HbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfq-XbuEeOlpfB_tZS-QA" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_rQGJoXbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_rQGJoHbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rQGJonbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9n-f4XbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_9n-f4HbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9n-f4nbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_an4UAHl8EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_RnmmUHl8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_an4UAXl8EeOlpfB_tZS-QA" x="90" y="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_an-aoHl8EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_RnmmUnl8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_an-aoXl8EeOlpfB_tZS-QA" x="90" y="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aoEhQHl8EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_RnmmVHl8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoEhQXl8EeOlpfB_tZS-QA" x="90" y="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aoEhQnl8EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_RnmmVnl8EeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aoEhQ3l8EeOlpfB_tZS-QA" x="90" y="100"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfq-nbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfq-3buEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfq_HbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfq_XbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfq_nbuEeOlpfB_tZS-QA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfq_3buEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfrAHbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfrAXbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrAnbuEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrBnbuEeOlpfB_tZS-QA" x="72" y="132" width="310" height="343"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bGfrN3buEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfrOHbuEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfrOXbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfrOnbuEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfrO3buEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfrPHbuEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfrPXbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfrPnbuEeOlpfB_tZS-QA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfrP3buEeOlpfB_tZS-QA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfrQHbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfrQXbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfrQnbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrQ3buEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfrRHbuEeOlpfB_tZS-QA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfrRXbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfrRnbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfrR3buEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrSHbuEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bGfrSXbuEeOlpfB_tZS-QA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bGfrSnbuEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bGfrS3buEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfrTHbuEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrTXbuEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_HoKjcNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrUXbuEeOlpfB_tZS-QA" x="438" y="576" width="115"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9AF4IHltEeOlpfB_tZS-QA" type="2006" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9AL-wHltEeOlpfB_tZS-QA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9AL-wXltEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9AL-wnltEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9AL-w3ltEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9AL-xHltEeOlpfB_tZS-QA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9AL-xXltEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9AL-xnltEeOlpfB_tZS-QA" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9AL-x3ltEeOlpfB_tZS-QA" type="7015">
+ <children xmi:type="notation:Shape" xmi:id="_AKSjQHluEeOlpfB_tZS-QA" type="3017" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="layers.uml#_AKMcoHluEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AKSjQXluEeOlpfB_tZS-QA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_BUS4QXluEeOlpfB_tZS-QA" type="3017" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="layers.uml#_BUS4QHluEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BUS4QnluEeOlpfB_tZS-QA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9AL-yHltEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9AL-yXltEeOlpfB_tZS-QA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9AL-ynltEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9AL-y3ltEeOlpfB_tZS-QA"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="layers.uml#_8__xgHltEeOlpfB_tZS-QA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9AF4IXltEeOlpfB_tZS-QA" x="1122" y="162"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Vjf6UXbuEeOlpfB_tZS-QA"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_bGfpC3buEeOlpfB_tZS-QA" type="4002" source="_bGfrN3buEeOlpfB_tZS-QA" target="_bGfo0HbuEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfpDHbuEeOlpfB_tZS-QA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfpDXbuEeOlpfB_tZS-QA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bGfpDnbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_OJCPcNjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfpD3buEeOlpfB_tZS-QA" points="[2, -2, -91, 72]$[90, -64, -3, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpEHbuEeOlpfB_tZS-QA" id="(0.6,0.02)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpEXbuEeOlpfB_tZS-QA" id="(0.4122137404580153,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bGfpVnbuEeOlpfB_tZS-QA" type="4002" source="_bGfo0HbuEeOlpfB_tZS-QA" target="_bGfp73buEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfpV3buEeOlpfB_tZS-QA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfpWHbuEeOlpfB_tZS-QA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bGfpWXbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_18JYYNt5EeKwptaAAanMDg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfpWnbuEeOlpfB_tZS-QA" points="[-3, -5, 0, 82]$[-11, -80, -8, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpW3buEeOlpfB_tZS-QA" id="(0.48210526315789476,0.004672897196261682)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpXHbuEeOlpfB_tZS-QA" id="(0.41624365482233505,0.8444444444444444)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bGfpXXbuEeOlpfB_tZS-QA" type="4002" source="_bGfqCnbuEeOlpfB_tZS-QA" target="_bGfo0HbuEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfpXnbuEeOlpfB_tZS-QA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfpX3buEeOlpfB_tZS-QA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bGfpYHbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#__ujk4NjMEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfpYXbuEeOlpfB_tZS-QA" points="[25, -12, -69, 32]$[88, -42, -6, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpYnbuEeOlpfB_tZS-QA" id="(0.62,0.053811659192825115)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpY3buEeOlpfB_tZS-QA" id="(0.08396946564885496,0.59)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bGfp3nbuEeOlpfB_tZS-QA" type="4001" source="_bGfq6HbuEeOlpfB_tZS-QA" target="_bGfo0HbuEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfp33buEeOlpfB_tZS-QA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp4HbuEeOlpfB_tZS-QA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfp4XbuEeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp4nbuEeOlpfB_tZS-QA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfp43buEeOlpfB_tZS-QA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp5HbuEeOlpfB_tZS-QA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfp5XbuEeOlpfB_tZS-QA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp5nbuEeOlpfB_tZS-QA" x="-16" y="9"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfp53buEeOlpfB_tZS-QA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp6HbuEeOlpfB_tZS-QA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfp6XbuEeOlpfB_tZS-QA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp6nbuEeOlpfB_tZS-QA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bGfp63buEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_cHkbsNbGEeKPiuTfpuvqHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfp7HbuEeOlpfB_tZS-QA" points="[5, -6, -94, 0]$[97, -7, -2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfp7XbuEeOlpfB_tZS-QA" id="(0.9941176470588236,0.3533834586466165)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfp7nbuEeOlpfB_tZS-QA" id="(0.002079002079002079,0.2591362126245847)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bGfqJXbuEeOlpfB_tZS-QA" type="4001" source="_bGfo0HbuEeOlpfB_tZS-QA" target="_bGfq6HbuEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfqJnbuEeOlpfB_tZS-QA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqJ3buEeOlpfB_tZS-QA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfqKHbuEeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqKXbuEeOlpfB_tZS-QA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfqKnbuEeOlpfB_tZS-QA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqK3buEeOlpfB_tZS-QA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfqLHbuEeOlpfB_tZS-QA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqLXbuEeOlpfB_tZS-QA" x="-22" y="15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfqLnbuEeOlpfB_tZS-QA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqL3buEeOlpfB_tZS-QA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfqMHbuEeOlpfB_tZS-QA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqMXbuEeOlpfB_tZS-QA" x="-14" y="-15"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bGfqMnbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_PznBc2Q5EeOlpfB_tZS-QA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfqM3buEeOlpfB_tZS-QA" points="[-2, -4, 81, 0]$[-78, -1, 5, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfqNHbuEeOlpfB_tZS-QA" id="(0.004210526315789474,0.5560747663551402)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfqNXbuEeOlpfB_tZS-QA" id="(0.9705882352941176,0.8646616541353384)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bGfrB3buEeOlpfB_tZS-QA" type="4001" source="_bGfrN3buEeOlpfB_tZS-QA" target="_bGfo0HbuEeOlpfB_tZS-QA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfrCHbuEeOlpfB_tZS-QA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrCXbuEeOlpfB_tZS-QA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfrCnbuEeOlpfB_tZS-QA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrC3buEeOlpfB_tZS-QA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfrDHbuEeOlpfB_tZS-QA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrDXbuEeOlpfB_tZS-QA" x="-34" y="-41"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfrDnbuEeOlpfB_tZS-QA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrD3buEeOlpfB_tZS-QA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfrEHbuEeOlpfB_tZS-QA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrEXbuEeOlpfB_tZS-QA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bGfrEnbuEeOlpfB_tZS-QA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrE3buEeOlpfB_tZS-QA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bGfrFHbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_em-rwNjnEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfrFXbuEeOlpfB_tZS-QA" points="[0, -4, -89, 78]$[0, -76, -89, 6]$[87, -76, -2, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfrFnbuEeOlpfB_tZS-QA" id="(0.1826086956521739,0.04)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfrF3buEeOlpfB_tZS-QA" id="(0.015267175572519083,0.84)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.uml b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.uml
new file mode 100644
index 00000000000..a9e55846162
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.uml
@@ -0,0 +1,1554 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Model xmi:id="_gAOFQLcqEeK8_t7Rpq6ZJA" name="layers">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_7_dC4HbuEeOlpfB_tZS-QA" annotatedElement="_gAOFQLcqEeK8_t7Rpq6ZJA">
+ <body>Start the LayesStack.&#xD;
+This method should be called after the LayersStack creation. It is not called from the constructor, because &#xD;
+the initialisation can differ if the LayersStack is created by the user or by EMF after a reloading.&#xD;
+</body>
+ </ownedComment>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_uhlc8LcqEeK8_t7Rpq6ZJA">
+ <importedPackage xmi:type="uml:Model" href="notation/notation.uml#_AziHILcnEeKeLJDBCBPhPw"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Class" xmi:id="_yN_dQLcqEeK8_t7Rpq6ZJA" name="LayerNamedStyle">
+ <generalization xmi:type="uml:Generalization" xmi:id="_0NyKwLcqEeK8_t7Rpq6ZJA">
+ <general xmi:type="uml:Class" href="notation/notation.uml#_AziHercnEeKeLJDBCBPhPw"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_jWHHANa7EeKPiuTfpuvqHA" name="layersStack" type="_gT0asNa7EeKPiuTfpuvqHA" aggregation="composite" association="_jWQ4ANa7EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jWHHAda7EeKPiuTfpuvqHA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jWHHAta7EeKPiuTfpuvqHA" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_OyQ5QL1xEeKKJJ5BmR3W3Q" name="String"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_eNnjMNa7EeKPiuTfpuvqHA" name="LayerDescriptor">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_iiUlMNqCEeKQqZMBCFd2Uw" name="propertyRegistry" type="_8OefoNjoEeKQqZMBCFd2Uw" association="_iim5ENqCEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iiUlMdqCEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iiUlMtqCEeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_gT0asNa7EeKPiuTfpuvqHA" clientDependency="_2bk1oHpGEeOlpfB_tZS-QA" name="LayersStack">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_cHaqsNbGEeKPiuTfpuvqHA" name="layers" type="_9IaAANjiEeKQqZMBCFd2Uw" aggregation="composite" association="_cHkbsNbGEeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cHaqsdbGEeKPiuTfpuvqHA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cHaqstbGEeKPiuTfpuvqHA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ctvjINjwEeKQqZMBCFd2Uw" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ctvjIdjwEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ctvjItjwEeKQqZMBCFd2Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ctvjI9jwEeKQqZMBCFd2Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ct7wYNjwEeKQqZMBCFd2Uw" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ct7wYdjwEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ct7wYtjwEeKQqZMBCFd2Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ct7wY9jwEeKQqZMBCFd2Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_hQIS8NkhEeKQqZMBCFd2Uw" name="diagram" association="_hQam0NkhEeKQqZMBCFd2Uw">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hQIS8dkhEeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hQIS8tkhEeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_c5OEgHl8EeOlpfB_tZS-QA" name="state" visibility="public" type="_8__xgHltEeOlpfB_tZS-QA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c5OEgXl8EeOlpfB_tZS-QA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c5OEgnl8EeOlpfB_tZS-QA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_c5OEg3l8EeOlpfB_tZS-QA" name="detached" value="detached"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_2bk1oHpGEeOlpfB_tZS-QA" name="InterfaceRealization1" client="_gT0asNa7EeKPiuTfpuvqHA" supplier="_RopgYHpGEeOlpfB_tZS-QA" contract="_RopgYHpGEeOlpfB_tZS-QA"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_8H1xgO70EeK0p4PkXjd-_Q" name="getComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_8H1xge70EeK0p4PkXjd-_Q">
+ <body>Get the ComputePropertyValueCommands for the specified views and Property.&#xD;
+@return A list of Command allowing to get the value of the property for each view. The list contains null if no command is available for a View.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8H1xgu70EeK0p4PkXjd-_Q" name="view">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8H1xg-70EeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8H1xhO70EeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_8IAJkO70EeK0p4PkXjd-_Q" name="getPropertiesComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_8IAJke70EeK0p4PkXjd-_Q">
+ <body>Get the ComputePropertyValueCommands for the specified view and Properties.&#xD;
+@return A list of Command allowing to get the value of the properties for the specified view. The list contains null if no command is available for a property.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8IAJku70EeK0p4PkXjd-_Q" name="view">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8IAJk-70EeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA" isOrdered="true" direction="inout">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8IAJlO70EeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8IAJle70EeK0p4PkXjd-_Q" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8IAJlu70EeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8IAJl-70EeK0p4PkXjd-_Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8IAJmO70EeK0p4PkXjd-_Q" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_8ILIsO70EeK0p4PkXjd-_Q" name="getViewsComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_8ILIse70EeK0p4PkXjd-_Q">
+ <body>Get the ComputePropertyValueCommands for the specified view and Property.&#xD;
+@return the Command allowing to get the value, or null.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8ILIsu70EeK0p4PkXjd-_Q" name="view" isOrdered="true" direction="inout">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8ILIs-70EeK0p4PkXjd-_Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8ILItO70EeK0p4PkXjd-_Q" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8ILIte70EeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8ILItu70EeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8ILIt-70EeK0p4PkXjd-_Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8ILIuO70EeK0p4PkXjd-_Q" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_rQGJoHbuEeOlpfB_tZS-QA" name="startAfterCreation"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_9n-f4HbuEeOlpfB_tZS-QA" name="attachLayers" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Go6U4HbvEeOlpfB_tZS-QA" annotatedElement="_9n-f4HbuEeOlpfB_tZS-QA">
+ <body>Start the LayersStack after a reloading by EMF. This method should be explicitly called after a reloading.&#xD;
+The method usually start the layer behaviors.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_RnmmUHl8EeOlpfB_tZS-QA" name="attach" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_RnmmUXl8EeOlpfB_tZS-QA" annotatedElement="_RnmmUHl8EeOlpfB_tZS-QA">
+ <body>Try to attach this Layer. If successful, the state go to &quot;attached&quot;. Otherwise, an exception is thrown.&#xD;
+A Layer can be attached if its required attributes are set.&#xD;
+Required attributes:&#xD;
+&lt;ul>&#xD;
+ &lt;li>application&lt;/li>&#xD;
+ &lt;li>owningLayerStack&lt;/li>&#xD;
+ &lt;li>parent container&lt;/li>&#xD;
+ &lt;li>&lt;/li>&#xD;
+&lt;/ul>&#xD;
+Just after enterring in &quot;attached&quot; state, the enterAttachedState() method is called.&#xD;
+If this Layer is successfully attached, then attach subLayers.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_RnmmUnl8EeOlpfB_tZS-QA" name="detach" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_RnmmU3l8EeOlpfB_tZS-QA" annotatedElement="_RnmmUnl8EeOlpfB_tZS-QA">
+ <body>Detach the Layer. The state go to &quot;detached&quot;.&#xD;
+Associated behavior are stopped.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_RnmmVHl8EeOlpfB_tZS-QA" name="enterAttachedState" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_RnmmVXl8EeOlpfB_tZS-QA" annotatedElement="_RnmmVHl8EeOlpfB_tZS-QA">
+ <body>This method is called by the class immediately after entering in attached state.&#xD;
+The methodcan be used to start the layer behaviors.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_RnmmVnl8EeOlpfB_tZS-QA" name="exitAttachedState">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_RnmmV3l8EeOlpfB_tZS-QA" annotatedElement="_RnmmVnl8EeOlpfB_tZS-QA">
+ <body>This method is called just before this Layer leave the attached state.&#xD;
+</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_jWQ4ANa7EeKPiuTfpuvqHA" name="layerNamedStyle_layerStack_1" memberEnd="_jWQ4Ada7EeKPiuTfpuvqHA _jWHHANa7EeKPiuTfpuvqHA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_jWQ4Ada7EeKPiuTfpuvqHA" name="layerNamedStyle" type="_yN_dQLcqEeK8_t7Rpq6ZJA" association="_jWQ4ANa7EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jWQ4Ata7EeKPiuTfpuvqHA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jWQ4A9a7EeKPiuTfpuvqHA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_51zAINa7EeKPiuTfpuvqHA" name="AbstractLayer" isAbstract="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="__ujk4NjMEeKgkM6XJF9t4A" general="_9IaAANjiEeKQqZMBCFd2Uw"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_5YkcINa8EeKPiuTfpuvqHA" name="propertyValues" type="_AjTZ8Na8EeKPiuTfpuvqHA" isOrdered="true" isUnique="false" association="_5YuNINa8EeKPiuTfpuvqHA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_yAlZYNkWEeKQqZMBCFd2Uw">
+ <body>An ordered list of references onvalue instances.&#xD;
+This list is used to access instances by indexes.&#xD;
+Elements are set in the list when they are attached to the layer. A null element mean that the property at the specified index is not attached.&#xD;
+The list must have the same size as the list of available properties.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5YkcIda8EeKPiuTfpuvqHA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5YkcIta8EeKPiuTfpuvqHA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_A1bYQNjLEeKgkM6XJF9t4A" name="propertyValueMap" type="_vMMQsNjKEeKgkM6XJF9t4A" aggregation="composite" association="_A1nlgNjLEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A1bYQdjLEeKgkM6XJF9t4A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A1bYQtjLEeKgkM6XJF9t4A" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_LA8SkNjiEeKQqZMBCFd2Uw" name="layerDescriptor" type="_eNnjMNa7EeKPiuTfpuvqHA" association="_LBIf0NjiEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LA8SkdjiEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LA8SktjiEeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_3qy14NjkEeKQqZMBCFd2Uw" name="views" association="_3q_DINjkEeKQqZMBCFd2Uw">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3qy14djkEeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3qy14tjkEeKQqZMBCFd2Uw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_rEPKgO-MEeK0p4PkXjd-_Q" name="attachedProperties" type="_-vaacNa7EeKPiuTfpuvqHA" aggregation="composite" isDerived="true" association="_rEb-0O-MEeK0p4PkXjd-_Q">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_0zHqoO-MEeK0p4PkXjd-_Q">
+ <body>Return the list of Property (descriptors) attached to the Layer.&#xD;
+This is a derived transient list.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rEPKge-MEeK0p4PkXjd-_Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rEPKgu-MEeK0p4PkXjd-_Q" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_gfah8OKIEeKOWoLMe41Aew" name="addPropertyInstance" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_zzrA4OKIEeKOWoLMe41Aew">
+ <body>Add the specified property to the map of property.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ocu90OKIEeKOWoLMe41Aew" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_9j3nQOKWEeKOWoLMe41Aew" name="result" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_sJkb8OKIEeKOWoLMe41Aew" name="removePropertyInstance">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_sJkb8eKIEeKOWoLMe41Aew" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_ldtfkOKWEeKOWoLMe41Aew" name="getPropertyInstance" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_ldtfkeKWEeKOWoLMe41Aew">
+ <body>Add the specified property to the map of property.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ldtfkuKWEeKOWoLMe41Aew" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_voU5cOKWEeKOWoLMe41Aew" name="result" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_IR-vwOKXEeKOWoLMe41Aew" name="getPropertyInstance" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_IR-vweKXEeKOWoLMe41Aew">
+ <body>Add the specified property to the map of property.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_IR-vwuKXEeKOWoLMe41Aew" name="property" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_IR-vw-KXEeKOWoLMe41Aew" name="result" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-vaacNa7EeKPiuTfpuvqHA" name="Property">
+ <generalization xmi:type="uml:Generalization" xmi:id="_YRb5sNhdEeKgkM6XJF9t4A" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_L2FowNhcEeKgkM6XJF9t4A" name="type" type="_EoL3oNhcEeKgkM6XJF9t4A" association="_L2X8oNhcEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L2FowdhcEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L2FowthcEeKgkM6XJF9t4A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_O62aQNhcEeKgkM6XJF9t4A" name="defaultValue" type="_AjTZ8Na8EeKPiuTfpuvqHA" aggregation="composite" association="_O7IuINhcEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O62aQdhcEeKgkM6XJF9t4A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O62aQthcEeKgkM6XJF9t4A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_sdWO0NhcEeKgkM6XJF9t4A" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_utwLMNhcEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ut8YcNhcEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_uunG0NhcEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_hT9qINhdEeKgkM6XJF9t4A" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j92dgNhdEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j-CqwNhdEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_j-tZINhdEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_HjktUO3qEeKwLp35IbAIig" name="index" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_OHvk8O3qEeKwLp35IbAIig">
+ <body>Index of the property in the arrays of the application.&#xD;
+The index is used by the application to access property in arrays.&#xD;
+Each property has a unique index. This is the application responsability to maintain the index.&#xD;
+Usually, the index is set by the PropertyRegistry when Properties are registered. Then, all arrays indexed Properties can reorder themself. &#xD;
+This is done immediately after the owner of the array know the application or the PropertyRegistry &#xD;
+(see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl.resetAllPropertyValuesFromRegistry() )&#xD;
+</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LG9UgO3qEeKwLp35IbAIig" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LHPoYO3qEeKwLp35IbAIig" value="1"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_Bic9oO-FEeK0p4PkXjd-_Q" value="-1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_9LLeENhcEeKgkM6XJF9t4A" name="createInstance" raisedException="_KG7HMNxMEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_HPKEcNhdEeKgkM6XJF9t4A" name="return" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AjTZ8Na8EeKPiuTfpuvqHA" clientDependency="_g2QFQO8YEeK0p4PkXjd-_Q" name="TypeInstance" isAbstract="true">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_g2QFQO8YEeK0p4PkXjd-_Q" name="InterfaceRealization1" client="_AjTZ8Na8EeKPiuTfpuvqHA" supplier="_XZJOcO8UEeK0p4PkXjd-_Q" contract="_XZJOcO8UEeK0p4PkXjd-_Q"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_ZFFKAEczEeOEBJ2PxFQgyQ" name="setValueFromString">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_ghl-4EczEeOEBJ2PxFQgyQ">
+ <body>Set the value of the instance from the porvided String.&#xD;
+Actually, only simple values are accepted.&#xD;
+TODO Allows complexe values, using a well defined syntax ?</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_fODTYEczEeOEBJ2PxFQgyQ" name="value" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_oJwUAEc8EeOEBJ2PxFQgyQ" name="setValueFromInstance">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_tVpxIEc8EeOEBJ2PxFQgyQ" name="value" type="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SuHkkNa8EeKPiuTfpuvqHA" name="int"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_TqqsYNa8EeKPiuTfpuvqHA" name="boolean"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_5YuNINa8EeKPiuTfpuvqHA" name="layer_propertyValue_1" memberEnd="_5YuNIda8EeKPiuTfpuvqHA _5YkcINa8EeKPiuTfpuvqHA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_5YuNIda8EeKPiuTfpuvqHA" name="layer" type="_51zAINa7EeKPiuTfpuvqHA" association="_5YuNINa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5YuNIta8EeKPiuTfpuvqHA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5YuNI9a8EeKPiuTfpuvqHA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_cHkbsNbGEeKPiuTfpuvqHA" name="layersStack_layer_1" memberEnd="_cHkbsdbGEeKPiuTfpuvqHA _cHaqsNbGEeKPiuTfpuvqHA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_cHkbsdbGEeKPiuTfpuvqHA" name="layersStack" type="_gT0asNa7EeKPiuTfpuvqHA" association="_cHkbsNbGEeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cHkbstbGEeKPiuTfpuvqHA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cHkbs9bGEeKPiuTfpuvqHA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_fAmyUNhbEeKgkM6XJF9t4A" name="Folder">
+ <generalization xmi:type="uml:Generalization" xmi:id="_6l23ENhbEeKgkM6XJF9t4A" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_js_o8NhbEeKgkM6XJF9t4A" name="elements" type="_ggM80NhbEeKgkM6XJF9t4A" aggregation="composite" association="_jtR80NhbEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_js_o8dhbEeKgkM6XJF9t4A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_js_o8thbEeKgkM6XJF9t4A" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_pSIZkNhoEeKgkM6XJF9t4A" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r_ILUNhoEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_afMNhoEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_sALUMNhoEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ggM80NhbEeKgkM6XJF9t4A" name="FolderElement" isAbstract="true"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_jtR80NhbEeKgkM6XJF9t4A" name="package_packageableElement_1" memberEnd="_jtR80dhbEeKgkM6XJF9t4A _js_o8NhbEeKgkM6XJF9t4A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_jtR80dhbEeKgkM6XJF9t4A" name="folder" type="_fAmyUNhbEeKgkM6XJF9t4A" association="_jtR80NhbEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jtR80thbEeKgkM6XJF9t4A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jtR809hbEeKgkM6XJF9t4A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_EoL3oNhcEeKgkM6XJF9t4A" name="Type" isAbstract="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_5T84YNhdEeKgkM6XJF9t4A" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_kg7x4NhcEeKgkM6XJF9t4A" name="metamodel" type="_I3wPYNhcEeKgkM6XJF9t4A" association="_khB4gNhcEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kg7x4dhcEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kg7x4thcEeKgkM6XJF9t4A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_oTs44NhcEeKgkM6XJF9t4A" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rDya4NhcEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rD-oINhcEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_rEpWgNhcEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_kquxoNhdEeKgkM6XJF9t4A" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m6-9ANhdEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m7RQ4NhdEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_m77_QNhdEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_VRDxkNhgEeKgkM6XJF9t4A" name="createInstance">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_VRDxkdhgEeKgkM6XJF9t4A" name="return" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_I3wPYNhcEeKgkM6XJF9t4A" name="Metamodel">
+ <generalization xmi:type="uml:Generalization" xmi:id="_7uWeQNhdEeKgkM6XJF9t4A" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_r6aEYNhdEeKgkM6XJF9t4A" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u3drYNhdEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u3p4oNhdEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_u4UnANhdEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_vhv-gNhdEeKgkM6XJF9t4A" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xtI4ANhdEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xtbL4NhdEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_xuF6QNhdEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_i5nR8NhgEeKgkM6XJF9t4A" name="nsuri" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_llQY0NhgEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_llcmENhgEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_lmHUcNhgEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_mR_jANhgEeKgkM6XJF9t4A" name="pluginID" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o2xM4NhgEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o3DgwNhgEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_o3uPINhgEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_pkeAYNhgEeKgkM6XJF9t4A" name="ePackageInstanceName" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uXcAINhgEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uXoNYNhgEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_uYZCYNhgEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="__MsGANhgEeKgkM6XJF9t4A" name="isTypeValid" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Eu5xYNhhEeKgkM6XJF9t4A">
+ <body>Flag indicating if the type is valide, ie if the type can be instancied with the provided values.&#xD;
+This flag is set automatically by the class. The class listen to the modifications of nsuri, pluginID and ePAckageInstance. &#xD;
+When one of these property is modified, the class check if the type can be instanciated. Set the flag accordingly.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AHx1QNhhEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AH-CgNhhEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AIow4NhhEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_K3KQcNheEeKgkM6XJF9t4A" name="getEPackage">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_SDWKUNheEeKgkM6XJF9t4A" name="return" type="_lVnFMNheEeKgkM6XJF9t4A" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_L2X8oNhcEeKgkM6XJF9t4A" name="propertyDescriptor_type_1" memberEnd="_L2X8odhcEeKgkM6XJF9t4A _L2FowNhcEeKgkM6XJF9t4A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_L2X8odhcEeKgkM6XJF9t4A" name="propertyDescriptor" type="_-vaacNa7EeKPiuTfpuvqHA" association="_L2X8oNhcEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L2X8othcEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L2X8o9hcEeKgkM6XJF9t4A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_O7IuINhcEeKgkM6XJF9t4A" name="propertyDescriptor_propertyValue_1" memberEnd="_O7IuIdhcEeKgkM6XJF9t4A _O62aQNhcEeKgkM6XJF9t4A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_O7IuIdhcEeKgkM6XJF9t4A" name="propertyDescriptor" type="_-vaacNa7EeKPiuTfpuvqHA" association="_O7IuINhcEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O7IuIthcEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O7IuI9hcEeKgkM6XJF9t4A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_khB4gNhcEeKgkM6XJF9t4A" name="type_metamodel_1" memberEnd="_khB4gdhcEeKgkM6XJF9t4A _kg7x4NhcEeKgkM6XJF9t4A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_khB4gdhcEeKgkM6XJF9t4A" name="type" type="_J6C5MNhkEeKgkM6XJF9t4A" association="_khB4gNhcEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_khB4gthcEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_khB4g9hcEeKgkM6XJF9t4A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_c1QNsNheEeKgkM6XJF9t4A" name="Object"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_lVnFMNheEeKgkM6XJF9t4A" name="EPackage"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6RrIENhhEeKgkM6XJF9t4A" name="IntInstance">
+ <generalization xmi:type="uml:Generalization" xmi:id="_g5ap4NhiEeKgkM6XJF9t4A" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_HJX90NhjEeKgkM6XJF9t4A" name="value" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kY2vwNhjEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kZC9ANhjEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_kZtrYNhjEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-yuRYNhhEeKgkM6XJF9t4A" name="BooleanInstance">
+ <generalization xmi:type="uml:Generalization" xmi:id="_klghINhiEeKgkM6XJF9t4A" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_lMfMINhjEeKgkM6XJF9t4A" name="value" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ngE_YNhjEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ngRMoNhjEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ng77ANhjEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Cww0QNhiEeKgkM6XJF9t4A" name="StringInstance">
+ <generalization xmi:type="uml:Generalization" xmi:id="_mlgC8NhiEeKgkM6XJF9t4A" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_oRNhYNhjEeKgkM6XJF9t4A" name="value" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qxBywNhjEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qxOAANhjEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_qx4uYNhjEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6xEH4NhjEeKgkM6XJF9t4A" name="IntType">
+ <generalization xmi:type="uml:Generalization" xmi:id="_n3p8cNhkEeKgkM6XJF9t4A" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__iczQNhjEeKgkM6XJF9t4A" name="BooleanType">
+ <generalization xmi:type="uml:Generalization" xmi:id="_rgmZENhkEeKgkM6XJF9t4A" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_E308gNhkEeKgkM6XJF9t4A" name="StringType">
+ <generalization xmi:type="uml:Generalization" xmi:id="_tdBpgNhkEeKgkM6XJF9t4A" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_J6C5MNhkEeKgkM6XJF9t4A" name="CustomType">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_08frwNhkEeKgkM6XJF9t4A">
+ <body>A CustomType is used to refer to a type defined in an external metamodel.&#xD;
+The classifier specify the name of the type defined in a ECore metamodel. The metamodel property is used&#xD;
+to specify the ECore metamodel containing the type referenced.</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="_wLYGINhkEeKgkM6XJF9t4A" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_U0l7MNhkEeKgkM6XJF9t4A" name="classifier" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V7OMENhkEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V7aZUNhkEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_V8FHsNhkEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_vMMQsNjKEeKgkM6XJF9t4A" name="StringToTypeInstanceMap">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_1B8jINjKEeKgkM6XJF9t4A" name="key" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3hw0gNjKEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3h9BwNjKEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3it2wNjKEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_4f0_QNjKEeKgkM6XJF9t4A" name="value" visibility="public" type="_AjTZ8Na8EeKPiuTfpuvqHA" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8Z8rcNjKEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8aJfwNjKEeKgkM6XJF9t4A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_8a6UwNjKEeKgkM6XJF9t4A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A1nlgNjLEeKgkM6XJF9t4A" name="layer_stringToTypeInstanceMap_1" memberEnd="_A1nlgdjLEeKgkM6XJF9t4A _A1bYQNjLEeKgkM6XJF9t4A">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_A1nlgdjLEeKgkM6XJF9t4A" name="layer" type="_51zAINa7EeKPiuTfpuvqHA" association="_A1nlgNjLEeKgkM6XJF9t4A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A1nlgtjLEeKgkM6XJF9t4A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A1nlg9jLEeKgkM6XJF9t4A" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DN8s0NjhEeKQqZMBCFd2Uw" name="LayersStackApplication">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_K6hW8NjhEeKQqZMBCFd2Uw">
+ <body>This represent the root of LayerStack.&#xD;
+All model with LayerStack has an instance of this class as root.&#xD;
+This class allows to find the associated registries : PropertyRegistry, LayerDescriptorRegistry</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="_bwKaMNjoEeKQqZMBCFd2Uw" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_aj6GoNjhEeKQqZMBCFd2Uw" name="layersStacks" type="_gT0asNa7EeKPiuTfpuvqHA" aggregation="composite" association="_akGT4NjhEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aj6GodjhEeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aj6GotjhEeKQqZMBCFd2Uw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_DYWsYNjpEeKQqZMBCFd2Uw" name="layerStackRegistry" type="_uMYd4NjoEeKQqZMBCFd2Uw" aggregation="composite" association="_DYi5oNjpEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DYWsYdjpEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DYWsYtjpEeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_EEc9YNjpEeKQqZMBCFd2Uw" name="propertyRegistry" type="_8OefoNjoEeKQqZMBCFd2Uw" aggregation="composite" association="_EEjEANjpEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EEc9YdjpEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EEc9YtjpEeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_5rptsNqBEeKQqZMBCFd2Uw" name="layerDescriptorRegistry" type="_zYGE8NqBEeKQqZMBCFd2Uw" aggregation="composite" association="_5r8BkNqBEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5rptsdqBEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5rptstqBEeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_wRCXENt2EeKQqZMBCFd2Uw" name="factory" type="_IOwJ4Nt2EeKQqZMBCFd2Uw" aggregation="composite" association="_wROkUNt2EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wRCXEdt2EeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wRCXEtt2EeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_3F7c4O3uEeKwLp35IbAIig" name="propertySetterRegistry" type="_q85OgO3uEeKwLp35IbAIig" aggregation="composite" association="_3GHqIO3uEeKwLp35IbAIig">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3F7c4e3uEeKwLp35IbAIig"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3F7c4u3uEeKwLp35IbAIig" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_FDc3EAxAEeOjX-JbGFEH7w" name="layerOperatorDescriptorRegistry" type="_T5we4AkdEeOnVqX9VcfeWQ" aggregation="composite" association="_FDpEUAxAEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDc3EQxAEeOjX-JbGFEH7w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDc3EgxAEeOjX-JbGFEH7w" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_jo2R4NjhEeKQqZMBCFd2Uw" name="getLayersStackFor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_3TxkYNjhEeKQqZMBCFd2Uw" name="diagram">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8X93ANjhEeKQqZMBCFd2Uw" name="return" type="_gT0asNa7EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_8QO3kN0kEeKwptaAAanMDg" name="removeLayersStackFor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_8QO3kd0kEeKwptaAAanMDg" name="diagram">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_H4FrgN0lEeKwptaAAanMDg" name="isLayersStackAttachedFor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_H4Frgd0lEeKwptaAAanMDg" name="diagram">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_H4Frgt0lEeKwptaAAanMDg" name="return" type="_TqqsYNa8EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_ZJ8N0N0lEeKwptaAAanMDg" name="createLayersStackFor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZJ8N0d0lEeKwptaAAanMDg" name="diagram">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZJ8N0t0lEeKwptaAAanMDg" name="return" type="_gT0asNa7EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_ZdgqEN0lEeKwptaAAanMDg" name="lookupLayersStackFor" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZdgqEd0lEeKwptaAAanMDg" name="diagram">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZdgqEt0lEeKwptaAAanMDg" name="return" type="_gT0asNa7EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_akGT4NjhEeKQqZMBCFd2Uw" name="layersStackApplication_layersStack_1" memberEnd="_akGT4djhEeKQqZMBCFd2Uw _aj6GoNjhEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_akGT4djhEeKQqZMBCFd2Uw" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_akGT4NjhEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_akGT4tjhEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_akGT49jhEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_LBIf0NjiEeKQqZMBCFd2Uw" name="layer_layerDescriptor_1" memberEnd="_LBIf0djiEeKQqZMBCFd2Uw _LA8SkNjiEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_LBIf0djiEeKQqZMBCFd2Uw" name="layer" type="_51zAINa7EeKPiuTfpuvqHA" association="_LBIf0NjiEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LBIf0tjiEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LBIf09jiEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_9IaAANjiEeKQqZMBCFd2Uw" name="LayerExpression" isAbstract="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_18JYYNt5EeKwptaAAanMDg" general="_325AENt0EeKQqZMBCFd2Uw"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AWx_gNjuEeKQqZMBCFd2Uw" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWx_gdjuEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWx_gtjuEeKQqZMBCFd2Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AWx_g9juEeKQqZMBCFd2Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_AW-MwNjuEeKQqZMBCFd2Uw" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AW-MwdjuEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AW-MwtjuEeKQqZMBCFd2Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AW-Mw9juEeKQqZMBCFd2Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_mCUIAAxEEeOjX-JbGFEH7w" name="isLayerEnabledInternal" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_unSZwAxEEeOjX-JbGFEH7w">
+ <body>Return true if the Layer is enabled (participate to the diagram), or false if it is not enabled.&#xD;
+This is a derieved property.&#xD;
+This flag is used internally to check if the layer is enabled. It is used by operation computing command. If the flag return false, no command is returned.&#xD;
+This property is used by LayerExpressions to bypass or not a layer.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_puPAIAxEEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pukXUAxEEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_pvaE0AxEEeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_qaozIAxEEeOjX-JbGFEH7w" name="isLayerEnabled" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_-aGyQAxEEeOjX-JbGFEH7w">
+ <body>Is the user enabled this layer ?&#xD;
+Return true if the user enable this layer, false if the user disable this layer.&#xD;
+When the user disable a layer, the isEnable property also return false.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tAyWAAxEEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tBHGIAxEEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_hvDRIAxGEeOjX-JbGFEH7w" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_xcbgQGQ7EeOlpfB_tZS-QA" name="isBranchEnabled" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_egbT0GQ8EeOlpfB_tZS-QA" annotatedElement="_xcbgQGQ7EeOlpfB_tZS-QA">
+ <body>Is the branch from this node to the root enabled ?&#xD;
+A branch is enabled if all node of the branch are enabled.&#xD;
+In other world, if an ancestor node is disable, the branch is disabled.&#xD;
+Setting the value of this node set the value of the subnodes.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xcbgQmQ7EeOlpfB_tZS-QA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xcbgQ2Q7EeOlpfB_tZS-QA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_xcbgRGQ7EeOlpfB_tZS-QA" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_PznBcGQ5EeOlpfB_tZS-QA" name="owningLayersStack" type="_gT0asNa7EeKPiuTfpuvqHA" association="_PznBc2Q5EeOlpfB_tZS-QA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PznBcWQ5EeOlpfB_tZS-QA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PznBcmQ5EeOlpfB_tZS-QA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_E2soAHluEeOlpfB_tZS-QA" name="state" visibility="public" type="_8__xgHltEeOlpfB_tZS-QA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ISCtgHluEeOlpfB_tZS-QA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ISCtgXluEeOlpfB_tZS-QA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_QPjWoHluEeOlpfB_tZS-QA" name="detached" value="detached"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_VdSFsO7HEeK0p4PkXjd-_Q" name="getComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_CI71QO7JEeK0p4PkXjd-_Q">
+ <body>Get the ComputePropertyValueCommands for the specified views and Property.&#xD;
+@return A list of Command allowing to get the value of the property for each view. The list contains null if no command is available for a View.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_kPANkO7HEeK0p4PkXjd-_Q" name="view">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_pVVOMO7HEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_vwTtkO7HEeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_xfz8UO7HEeK0p4PkXjd-_Q" name="getViewsComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_QUzeEO7JEeK0p4PkXjd-_Q">
+ <body>Get the ComputePropertyValueCommands for the specified view and Property.&#xD;
+@return the Command allowing to get the value, or null.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_xfz8Ue7HEeK0p4PkXjd-_Q" name="view" isOrdered="true" direction="inout">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SKx9sO7IEeK0p4PkXjd-_Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SLGGwO7IEeK0p4PkXjd-_Q" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_xfz8Uu7HEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_xfz8U-7HEeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T3aeoO7IEeK0p4PkXjd-_Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T31VYO7IEeK0p4PkXjd-_Q" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_x2PfUO7HEeK0p4PkXjd-_Q" name="getPropertiesComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Q2rcEO7JEeK0p4PkXjd-_Q">
+ <body>Get the ComputePropertyValueCommands for the specified view and Properties.&#xD;
+@return A list of Command allowing to get the value of the properties for the specified view. The list contains null if no command is available for a property.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_x2PfUe7HEeK0p4PkXjd-_Q" name="view">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_x2PfUu7HEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA" isOrdered="true" direction="inout">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_a3kHoO7IEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_a32bgO7IEeK0p4PkXjd-_Q" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_x2PfU-7HEeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_coyNoO7IEeK0p4PkXjd-_Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cpKoIO7IEeK0p4PkXjd-_Q" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Ps2L4GUaEeOlpfB_tZS-QA" name="attachToLayersStack">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_nC1a4GUaEeOlpfB_tZS-QA" annotatedElement="_Ps2L4GUaEeOlpfB_tZS-QA">
+ <body>Method called to specify that this Layer should be initialized for the specified LayerStack.&#xD;
+Init this Layer for the specified LayersStack.&#xD;
+This method is called by the LayersStack when it detect that tha layer is attached to it.&#xD;
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_cr5cQGUaEeOlpfB_tZS-QA" name="owningLayersStack" type="_gT0asNa7EeKPiuTfpuvqHA"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_kzSSwGUdEeOlpfB_tZS-QA" name="getLayersStack" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_04NH4GUdEeOlpfB_tZS-QA" annotatedElement="_kzSSwGUdEeOlpfB_tZS-QA">
+ <body>A checked version of getOwningLayersStack.&#xD;
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_r3jmwGUdEeOlpfB_tZS-QA" name="layersStack" type="_gT0asNa7EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_YeJ4IHbvEeOlpfB_tZS-QA" name="enterAttachedState" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_YeJ4IXbvEeOlpfB_tZS-QA" annotatedElement="_YeJ4IHbvEeOlpfB_tZS-QA">
+ <body>This method is called by the class immediately after entering in attached state.&#xD;
+The methodcan be used to start the layer behaviors.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_VTcHQHluEeOlpfB_tZS-QA" name="attach" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_tUEZQHlvEeOlpfB_tZS-QA" annotatedElement="_VTcHQHluEeOlpfB_tZS-QA">
+ <body>Try to attach this Layer. If successful, the state go to &quot;attached&quot;. Otherwise, an exception is thrown.&#xD;
+A Layer can be attached if its required attributes are set.&#xD;
+Required attributes:&#xD;
+&lt;ul>&#xD;
+ &lt;li>application&lt;/li>&#xD;
+ &lt;li>owningLayerStack&lt;/li>&#xD;
+ &lt;li>parent container&lt;/li>&#xD;
+ &lt;li>&lt;/li>&#xD;
+&lt;/ul>&#xD;
+Just after enterring in &quot;attached&quot; state, the enterAttachedState() method is called.&#xD;
+If this Layer is successfully attached, then attach subLayers.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_XeS1QHluEeOlpfB_tZS-QA" name="detach" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_yitoYHlvEeOlpfB_tZS-QA" annotatedElement="_XeS1QHluEeOlpfB_tZS-QA">
+ <body>Detach the Layer. The state go to &quot;detached&quot;.&#xD;
+Associated behavior are stopped.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_XNTkMHl0EeOlpfB_tZS-QA" name="exitAttachedState">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_e9TVwHl0EeOlpfB_tZS-QA" annotatedElement="_XNTkMHl0EeOlpfB_tZS-QA">
+ <body>This method is called just before this Layer leave the attached state.&#xD;
+</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_HoKjcNjjEeKQqZMBCFd2Uw" clientDependency="_0RxQgHpGEeOlpfB_tZS-QA" name="LayerOperator" isAbstract="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_OJCPcNjjEeKQqZMBCFd2Uw" general="_9IaAANjiEeKQqZMBCFd2Uw"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_emyegNjnEeKQqZMBCFd2Uw" name="layers" type="_9IaAANjiEeKQqZMBCFd2Uw" isOrdered="true" aggregation="composite" association="_em-rwNjnEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_emyegdjnEeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_emyegtjnEeKQqZMBCFd2Uw" value="*"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_0RxQgHpGEeOlpfB_tZS-QA" name="InterfaceRealization1" client="_HoKjcNjjEeKQqZMBCFd2Uw" supplier="_RopgYHpGEeOlpfB_tZS-QA" contract="_RopgYHpGEeOlpfB_tZS-QA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_WuVRUNjjEeKQqZMBCFd2Uw" name="AbstractLayerOperator" isAbstract="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_0lwNANjjEeKQqZMBCFd2Uw" general="_HoKjcNjjEeKQqZMBCFd2Uw"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_KSjUEAkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptor" type="_GKddUAkdEeOnVqX9VcfeWQ" association="_KSvhUAkdEeOnVqX9VcfeWQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KSjUEQkdEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KSjUEgkdEeOnVqX9VcfeWQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="__XEYgAw-EeOjX-JbGFEH7w" name="layerOperatorDescriptorName" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_GnIFwAw_EeOjX-JbGFEH7w">
+ <body>The name of the associated descriptor.&#xD;
+This name is persisted with the LayerOperator. The descriptor is not persisted.&#xD;
+The name is used to retrieve the Descriptor from the LayerOperatorDescriptorRegistry, when the application object is set. </body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__XEYgQw-EeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__XEYggw-EeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__XEYgww-EeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Dhl7YAxDEeOjX-JbGFEH7w" name="isDescriptorSet">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_LWD9QAxDEeOjX-JbGFEH7w">
+ <body>Return true if the Descriptor is set. Return false otherwise.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_KE53YAxDEeOjX-JbGFEH7w" name="return" type="_TqqsYNa8EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_0VaLUA3SEeOjX-JbGFEH7w" name="resetDescriptor">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_4IMgcA3SEeOjX-JbGFEH7w">
+ <body>Reset the descriptor accordingly to the descriptor name.&#xD;
+The descriptor is resseted only if the ::application and ::layerOperatorDescriptorName are set.&#xD;
+Nothing is done if one of the attribute is not set.&#xD;
+Nothing is done if the descriptor can not be found (maybe a log is issue).</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_gqW1kNjjEeKQqZMBCFd2Uw" name="TopLayerOperator">
+ <generalization xmi:type="uml:Generalization" xmi:id="_zoqSoNjjEeKQqZMBCFd2Uw" general="_WuVRUNjjEeKQqZMBCFd2Uw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wpB4wNjjEeKQqZMBCFd2Uw" name="StackedLayerOperator">
+ <generalization xmi:type="uml:Generalization" xmi:id="_zL9IgNjjEeKQqZMBCFd2Uw" general="_WuVRUNjjEeKQqZMBCFd2Uw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1xJCENjjEeKQqZMBCFd2Uw" name="CustomLayerOperator">
+ <generalization xmi:type="uml:Generalization" xmi:id="_4b_ewNjjEeKQqZMBCFd2Uw" general="_HoKjcNjjEeKQqZMBCFd2Uw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3q_DINjkEeKQqZMBCFd2Uw" name="layer_view_1" memberEnd="_3q_DIdjkEeKQqZMBCFd2Uw _3qy14NjkEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_3q_DIdjkEeKQqZMBCFd2Uw" name="layer" type="_51zAINa7EeKPiuTfpuvqHA" association="_3q_DINjkEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3q_DItjkEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3q_DI9jkEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_em-rwNjnEeKQqZMBCFd2Uw" name="layerOperator_layerExpression_1" memberEnd="_em-rwdjnEeKQqZMBCFd2Uw _emyegNjnEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_em-rwdjnEeKQqZMBCFd2Uw" name="layerOperator" type="_HoKjcNjjEeKQqZMBCFd2Uw" association="_em-rwNjnEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_em-rwtjnEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_em-rw9jnEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_uMYd4NjoEeKQqZMBCFd2Uw" name="LayerStackDescriptorRegistry"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_8OefoNjoEeKQqZMBCFd2Uw" name="PropertyRegistry">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_NVP94NjqEeKQqZMBCFd2Uw" name="properties" type="_-vaacNa7EeKPiuTfpuvqHA" isOrdered="true" aggregation="composite" association="_NVcLINjqEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NVP94djqEeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NVP94tjqEeKQqZMBCFd2Uw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_JhvqgNj_EeKQqZMBCFd2Uw" name="typeRegistry" type="_tLip8Nj-EeKQqZMBCFd2Uw" aggregation="composite" association="_Jh73wNj_EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jhvqgdj_EeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Jhvqgtj_EeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_RrX8YA2qEeOjX-JbGFEH7w" name="propertiesCount" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_p3RfsA2qEeOjX-JbGFEH7w">
+ <body>The number of registered properties.&#xD;
+This is a value derived from the internal list of properties.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V9bncA2qEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V9w-oA2qEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_V-leAA2qEeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_1X6RoNkCEeKQqZMBCFd2Uw" name="getPropertyIndex" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="__hV_wNkCEeKQqZMBCFd2Uw" name="propertyName" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_F2HJcNkDEeKQqZMBCFd2Uw" name="return" type="_SuHkkNa8EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_dcjjAOT7EeKSDdPH_NXL-g" name="getProperty" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_dcjjAeT7EeKSDdPH_NXL-g" name="propertyName" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_dcjjAuT7EeKSDdPH_NXL-g" name="return" type="_-vaacNa7EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Klpz4A3LEeOjX-JbGFEH7w" name="addProperty">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_RE4hIA3LEeOjX-JbGFEH7w">
+ <body>Add the property to the registry.&#xD;
+Also set the index of the property.&#xD;
+Do nothing if a Property with the same name already exist.&#xD;
+Note: a Property can not be retrieved from the registry (the operation is not supported by the application).</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_P1PeMA3LEeOjX-JbGFEH7w" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_DYi5oNjpEeKQqZMBCFd2Uw" name="layersStackApplication_layerStackRegistry_1" memberEnd="_DYi5odjpEeKQqZMBCFd2Uw _DYWsYNjpEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_DYi5odjpEeKQqZMBCFd2Uw" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_DYi5oNjpEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DYi5otjpEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DYi5o9jpEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_EEjEANjpEeKQqZMBCFd2Uw" name="layersStackApplication_propertyRegistry_1" memberEnd="_EEjEAdjpEeKQqZMBCFd2Uw _EEc9YNjpEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_EEjEAdjpEeKQqZMBCFd2Uw" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_EEjEANjpEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EEjEAtjpEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EEjEA9jpEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ItBOgNjqEeKQqZMBCFd2Uw" name="PropertyIndex">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ZcvUINjqEeKQqZMBCFd2Uw" name="property" type="_-vaacNa7EeKPiuTfpuvqHA" association="_ZdBoANjqEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZcvUIdjqEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZcvUItjqEeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_j-DE0NjsEeKQqZMBCFd2Uw" name="index" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lYYU0NjsEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lYqosNjsEeKQqZMBCFd2Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_lZbdsNjsEeKQqZMBCFd2Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_NVcLINjqEeKQqZMBCFd2Uw" name="propertyRegistry_property_1" memberEnd="_NVcLIdjqEeKQqZMBCFd2Uw _NVP94NjqEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_NVcLIdjqEeKQqZMBCFd2Uw" name="propertyRegistry" type="_8OefoNjoEeKQqZMBCFd2Uw" association="_NVcLINjqEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NVcLItjqEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NVcLI9jqEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_ZdBoANjqEeKQqZMBCFd2Uw" name="propertyIndex_property_1" memberEnd="_ZdBoAdjqEeKQqZMBCFd2Uw _ZcvUINjqEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_ZdBoAdjqEeKQqZMBCFd2Uw" name="propertyIndex" type="_ItBOgNjqEeKQqZMBCFd2Uw" association="_ZdBoANjqEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZdBoAtjqEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZdBoA9jqEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hgu_wNjqEeKQqZMBCFd2Uw" name="StringToPropertyIndexMap">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_mzbocNjqEeKQqZMBCFd2Uw" name="value" type="_ItBOgNjqEeKQqZMBCFd2Uw" aggregation="composite" association="_mzt8UNjqEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mzbocdjqEeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mzboctjqEeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_fQXNsNjsEeKQqZMBCFd2Uw" name="key" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hC3tINjsEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hDKoENjsEeKQqZMBCFd2Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_hD5A0NjsEeKQqZMBCFd2Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_mzt8UNjqEeKQqZMBCFd2Uw" name="stringToPropertyIndexMap_propertyIndex_1" memberEnd="_mzt8UdjqEeKQqZMBCFd2Uw _mzbocNjqEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_mzt8UdjqEeKQqZMBCFd2Uw" name="stringToPropertyIndexMap" type="_hgu_wNjqEeKQqZMBCFd2Uw" association="_mzt8UNjqEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mzt8UtjqEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mzt8U9jqEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tLip8Nj-EeKQqZMBCFd2Uw" name="TypeRegistry">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_2az14Nj-EeKQqZMBCFd2Uw" name="types" type="_P4xeANj_EeKQqZMBCFd2Uw" aggregation="composite" association="_2bADINj-EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2az14dj-EeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2az14tj-EeKQqZMBCFd2Uw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_2bADINj-EeKQqZMBCFd2Uw" name="typeRegistry_type_1" memberEnd="_2bADIdj-EeKQqZMBCFd2Uw _2az14Nj-EeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_2bADIdj-EeKQqZMBCFd2Uw" name="typeRegistry" type="_tLip8Nj-EeKQqZMBCFd2Uw" association="_2bADINj-EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2bADItj-EeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2bADI9j-EeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Jh73wNj_EeKQqZMBCFd2Uw" name="propertyRegistry_typeRegistry_1" memberEnd="_Jh73wdj_EeKQqZMBCFd2Uw _JhvqgNj_EeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_Jh73wdj_EeKQqZMBCFd2Uw" name="propertyRegistry" type="_8OefoNjoEeKQqZMBCFd2Uw" association="_Jh73wNj_EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jh73wtj_EeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Jh73w9j_EeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_P4xeANj_EeKQqZMBCFd2Uw" name="StringToTypeMap">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_U05ZwNj_EeKQqZMBCFd2Uw" name="value" type="_EoL3oNhcEeKgkM6XJF9t4A" aggregation="composite" association="_U1FnANj_EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U05Zwdj_EeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U05Zwtj_EeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_kaf1oNj_EeKQqZMBCFd2Uw" name="key" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lxSCYNj_EeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lxkWQNj_EeKQqZMBCFd2Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_lyPEoNj_EeKQqZMBCFd2Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_U1FnANj_EeKQqZMBCFd2Uw" name="stringToTypeMap_type_1" memberEnd="_U1FnAdj_EeKQqZMBCFd2Uw _U05ZwNj_EeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_U1FnAdj_EeKQqZMBCFd2Uw" name="stringToTypeMap" type="_P4xeANj_EeKQqZMBCFd2Uw" association="_U1FnANj_EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U1FnAtj_EeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U1FnA9j_EeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_hQam0NkhEeKQqZMBCFd2Uw" name="layersStack_diagram_1" memberEnd="_hQam0dkhEeKQqZMBCFd2Uw _hQIS8NkhEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_hQam0dkhEeKQqZMBCFd2Uw" name="layersStack" type="_gT0asNa7EeKPiuTfpuvqHA" association="_hQam0NkhEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hQam0tkhEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hQam09khEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_zYGE8NqBEeKQqZMBCFd2Uw" name="LayerDescriptorRegistry">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_TzkRwNqCEeKQqZMBCFd2Uw" name="layerDescriptors" type="_eNnjMNa7EeKPiuTfpuvqHA" aggregation="composite" association="_Tz2loNqCEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TzkRwdqCEeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TzkRwtqCEeKQqZMBCFd2Uw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_5r8BkNqBEeKQqZMBCFd2Uw" name="layersStackApplication_layerDescriptorRegistry_1" memberEnd="_5r8BkdqBEeKQqZMBCFd2Uw _5rptsNqBEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_5r8BkdqBEeKQqZMBCFd2Uw" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_5r8BkNqBEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5r8BktqBEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5r8Bk9qBEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Tz2loNqCEeKQqZMBCFd2Uw" name="layerDescriptorRegistry_layerDescriptor_1" memberEnd="_Tz2lodqCEeKQqZMBCFd2Uw _TzkRwNqCEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_Tz2lodqCEeKQqZMBCFd2Uw" name="layerDescriptorRegistry" type="_zYGE8NqBEeKQqZMBCFd2Uw" association="_Tz2loNqCEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Tz2lotqCEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Tz2lo9qCEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_iim5ENqCEeKQqZMBCFd2Uw" name="layerDescriptor_propertyRegistry_1" memberEnd="_iim5EdqCEeKQqZMBCFd2Uw _iiUlMNqCEeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_iim5EdqCEeKQqZMBCFd2Uw" name="layerDescriptor" type="_eNnjMNa7EeKPiuTfpuvqHA" association="_iim5ENqCEeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iim5EtqCEeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iim5E9qCEeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_xhwY8NqCEeKQqZMBCFd2Uw" name="SimpleLayerDescriptor">
+ <generalization xmi:type="uml:Generalization" xmi:id="_3ee2ENqCEeKQqZMBCFd2Uw" general="_eNnjMNa7EeKPiuTfpuvqHA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_z4m7kNqCEeKQqZMBCFd2Uw" name="RegExpLayerDescriptor">
+ <generalization xmi:type="uml:Generalization" xmi:id="_5RvjcNqCEeKQqZMBCFd2Uw" general="_eNnjMNa7EeKPiuTfpuvqHA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_325AENt0EeKQqZMBCFd2Uw" name="ApplicationDependantElement" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_KjtrkNt1EeKQqZMBCFd2Uw">
+ <body>Base class for elements depending on the LayerStackApplication.&#xD;
+This class carry a referenceto the Application.</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="__rXB8Nt0EeKQqZMBCFd2Uw" name="application" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="__rpV0Nt0EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__rXB8dt0EeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__rXB8tt0EeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="__rpV0Nt0EeKQqZMBCFd2Uw" name="applicationDependantElement_layersStackApplication_1" memberEnd="__rpV0dt0EeKQqZMBCFd2Uw __rXB8Nt0EeKQqZMBCFd2Uw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="__rpV0dt0EeKQqZMBCFd2Uw" name="applicationDependantElement" type="_325AENt0EeKQqZMBCFd2Uw" association="__rpV0Nt0EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__rpV0tt0EeKQqZMBCFd2Uw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__rpV09t0EeKQqZMBCFd2Uw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IOwJ4Nt2EeKQqZMBCFd2Uw" name="LayerApplicationFactory">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_wROkUdt2EeKQqZMBCFd2Uw" name="application" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_wROkUNt2EeKQqZMBCFd2Uw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wROkUtt2EeKQqZMBCFd2Uw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wROkU9t2EeKQqZMBCFd2Uw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_wROkUNt2EeKQqZMBCFd2Uw" name="layersStackApplication_layerApplicationFactory_1" memberEnd="_wROkUdt2EeKQqZMBCFd2Uw _wRCXENt2EeKQqZMBCFd2Uw"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_iYKFMNxGEeKwptaAAanMDg" name="LayersException"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_k-dZENxGEeKwptaAAanMDg" name="NotFoundException">
+ <generalization xmi:type="uml:Generalization" xmi:id="_oxlscNxGEeKwptaAAanMDg" general="_iYKFMNxGEeKwptaAAanMDg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_KG7HMNxMEeKwptaAAanMDg" name="BadStateException">
+ <generalization xmi:type="uml:Generalization" xmi:id="_ShHsUNxMEeKwptaAAanMDg" general="_iYKFMNxGEeKwptaAAanMDg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_agAC4NxWEeKwptaAAanMDg" name="NullInstance">
+ <generalization xmi:type="uml:Generalization" xmi:id="_drCbgNxWEeKwptaAAanMDg" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_OU7XsNxXEeKwptaAAanMDg" name="getInstance" isStatic="true">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_WSaLoNxXEeKwptaAAanMDg" type="_agAC4NxWEeKwptaAAanMDg" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_z9aN8OHTEeKCZbxNW-U3VQ" name="RegExpLayer">
+ <generalization xmi:type="uml:Generalization" xmi:id="_R8qP8OHUEeKCZbxNW-U3VQ" general="_51zAINa7EeKPiuTfpuvqHA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Bm93wBZ1EeOZwp016gnCFQ" name="expr" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DqoYoBZ1EeOZwp016gnCFQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Dq76oBZ1EeOZwp016gnCFQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Dr0rcBZ1EeOZwp016gnCFQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Fp_BQBZ1EeOZwp016gnCFQ" name="language" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_H11NwBZ1EeOZwp016gnCFQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_H2IIsBZ1EeOZwp016gnCFQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_H3BgkBZ1EeOZwp016gnCFQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_NAa0AFCkEeO_9LQ4jZWm3w" name="isDomainChangedEventDependant" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TxFPgFCkEeO_9LQ4jZWm3w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TxFPgVCkEeO_9LQ4jZWm3w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_TxFPglCkEeO_9LQ4jZWm3w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_X_qIwFCkEeO_9LQ4jZWm3w" name="domainChangedEventLevel" visibility="public" type="_7cWpgFVHEeOah7Z-UYdQAA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rnnm0FCkEeO_9LQ4jZWm3w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rnnm0VCkEeO_9LQ4jZWm3w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_rnnm0lCkEeO_9LQ4jZWm3w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_uJr68FCkEeO_9LQ4jZWm3w" name="isDiagramChangedEventDependant" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ua2jcFCkEeO_9LQ4jZWm3w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ua8qEFCkEeO_9LQ4jZWm3w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ua8qEVCkEeO_9LQ4jZWm3w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_y220sFCkEeO_9LQ4jZWm3w" name="diagramChangedEventLevel" visibility="public" type="_7cWpgFVHEeOah7Z-UYdQAA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1VR-8FCkEeO_9LQ4jZWm3w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1VR-8VCkEeO_9LQ4jZWm3w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1VR-8lCkEeO_9LQ4jZWm3w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_sPbYQFClEeO_9LQ4jZWm3w" name="expressionContextObjectType" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wnnggFClEeO_9LQ4jZWm3w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wnnggVClEeO_9LQ4jZWm3w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wnngglClEeO_9LQ4jZWm3w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_kI0XsBZ0EeOZwp016gnCFQ" name="activate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Ifv3ABaBEeOZwp016gnCFQ" name="newParentLayer" type="_WuVRUNjjEeKQqZMBCFd2Uw"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_lpOagBZ0EeOZwp016gnCFQ" name="deactivate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_MZS7cBaBEeOZwp016gnCFQ" name="oldParentLayer" type="_WuVRUNjjEeKQqZMBCFd2Uw"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_pKKxsBZ0EeOZwp016gnCFQ" name="isDerivedView" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_-UwgIBZ0EeOZwp016gnCFQ" name="res" type="_TqqsYNa8EeKPiuTfpuvqHA" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LLUi4BZ1EeOZwp016gnCFQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LLnd0BZ1EeOZwp016gnCFQ" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_0YIjYFVIEeOah7Z-UYdQAA" name="view">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_EnH6gFVJEeOah7Z-UYdQAA" name="attachDerivedView" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Pusr4FVJEeOah7Z-UYdQAA">
+ <body>Attach the provided view to the Layer if the isDerivedView(view) return true for this view.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_EnH6hFVJEeOah7Z-UYdQAA" name="view">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Y5m8QFVJEeOah7Z-UYdQAA" name="attachDerivedViews" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Y5m8QVVJEeOah7Z-UYdQAA">
+ <body>For each view, attach it to the Layer if the isDerivedView(view) return true for the view.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Y5m8QlVJEeOah7Z-UYdQAA" name="views">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h3YvkFVJEeOah7Z-UYdQAA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h3YvkVVJEeOah7Z-UYdQAA" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_m3jd0FVJEeOah7Z-UYdQAA" name="attachDerivedViews" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_m3jd0VVJEeOah7Z-UYdQAA">
+ <body>Attach the views associated to the Diagram to this layer, if the isDerivedView(view) return true for the view.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Lwc4MFVKEeOah7Z-UYdQAA" name="lookupDerivedViews" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Lwc4MVVKEeOah7Z-UYdQAA">
+ <body>Return the subcollection of views for which the expression return true.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Lwc4MlVKEeOah7Z-UYdQAA" name="views">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Lwc4M1VKEeOah7Z-UYdQAA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Lwc4NFVKEeOah7Z-UYdQAA" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_X28v8FVKEeOah7Z-UYdQAA" name="res" direction="return">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hTG1cFVXEeOeP67GJGKDkA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hTG1cVVXEeOeP67GJGKDkA" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__1GNoOHTEeKCZbxNW-U3VQ" name="Layer">
+ <generalization xmi:type="uml:Generalization" xmi:id="_am4OEOHUEeKCZbxNW-U3VQ" general="_51zAINa7EeKPiuTfpuvqHA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ti_eQOT_EeKSDdPH_NXL-g" name="Color">
+ <generalization xmi:type="uml:Generalization" xmi:id="_Y0k5AOUAEeKSDdPH_NXL-g" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_vkSnoOT_EeKSDdPH_NXL-g" name="ColorInstance">
+ <generalization xmi:type="uml:Generalization" xmi:id="_YCxooOUAEeKSDdPH_NXL-g" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Q8HvAOUAEeKSDdPH_NXL-g" name="value" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q8HvAeUAEeKSDdPH_NXL-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q8HvAuUAEeKSDdPH_NXL-g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Q8HvA-UAEeKSDdPH_NXL-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_fL2kIOUAEeKSDdPH_NXL-g" name="FillInstance">
+ <generalization xmi:type="uml:Generalization" xmi:id="_jXYwcOUAEeKSDdPH_NXL-g" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_nVngkOUAEeKSDdPH_NXL-g" name="transparency" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nVngkeUAEeKSDdPH_NXL-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nVngkuUAEeKSDdPH_NXL-g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_nVngk-UAEeKSDdPH_NXL-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_uTht4OUAEeKSDdPH_NXL-g" name="fillColor" type="_vkSnoOT_EeKSDdPH_NXL-g" aggregation="composite" association="_uTre4OUAEeKSDdPH_NXL-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uTht4eUAEeKSDdPH_NXL-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uTht4uUAEeKSDdPH_NXL-g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_gsEZsOUAEeKSDdPH_NXL-g" name="Fill">
+ <generalization xmi:type="uml:Generalization" xmi:id="_ip-Q0OUAEeKSDdPH_NXL-g" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_uTre4OUAEeKSDdPH_NXL-g" name="fillInstance_colorInstance_1" memberEnd="_uTre4eUAEeKSDdPH_NXL-g _uTht4OUAEeKSDdPH_NXL-g">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_uTre4eUAEeKSDdPH_NXL-g" name="fillInstance" type="_fL2kIOUAEeKSDdPH_NXL-g" association="_uTre4OUAEeKSDdPH_NXL-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uTre4uUAEeKSDdPH_NXL-g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uTre4-UAEeKSDdPH_NXL-g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_q85OgO3uEeKwLp35IbAIig" name="PropertySetterRegistry">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_3GHqIe3uEeKwLp35IbAIig" name="application" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_3GHqIO3uEeKwLp35IbAIig">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3GHqIu3uEeKwLp35IbAIig"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3GHqI-3uEeKwLp35IbAIig" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_iPT94O3vEeKwLp35IbAIig" name="propertySetters" type="_fyVlIO3vEeKwLp35IbAIig" isOrdered="true" association="_iPmRwO3vEeKwLp35IbAIig">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPT94e3vEeKwLp35IbAIig"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPT94u3vEeKwLp35IbAIig" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_hmejMO5mEeK0p4PkXjd-_Q" name="setterMap" type="_JSMf8O5mEeK0p4PkXjd-_Q" aggregation="composite" association="_hmkp0O5mEeK0p4PkXjd-_Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hmejMe5mEeK0p4PkXjd-_Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hmejMu5mEeK0p4PkXjd-_Q" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_L7LusO5WEeK0p4PkXjd-_Q" name="getPropertySetter" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Tr1nkO5WEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZJbRoO5WEeK0p4PkXjd-_Q" name="return" type="_fyVlIO3vEeKwLp35IbAIig" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_fF4pAO5WEeK0p4PkXjd-_Q" name="getPropertySetter" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_fF4pAe5WEeK0p4PkXjd-_Q" name="property" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_fF4pAu5WEeK0p4PkXjd-_Q" name="return" type="_fyVlIO3vEeKwLp35IbAIig" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_mCwUgO5WEeK0p4PkXjd-_Q" name="addPropertySetter">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_quPzQO5WEeK0p4PkXjd-_Q" name="setter" type="_fyVlIO3vEeKwLp35IbAIig"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3GHqIO3uEeKwLp35IbAIig" name="layersStackApplication_propertySetterRegistry_1" memberEnd="_3GHqIe3uEeKwLp35IbAIig _3F7c4O3uEeKwLp35IbAIig"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_fyVlIO3vEeKwLp35IbAIig" name="PropertySetter" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_4C8Y8O5VEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA" association="_4DImMO5VEeK0p4PkXjd-_Q">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_ApRVkO5WEeK0p4PkXjd-_Q">
+ <body>The property for which this setter is for.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4C8Y8e5VEeK0p4PkXjd-_Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4C8Y8u5VEeK0p4PkXjd-_Q" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_p3vR8O5qEeK0p4PkXjd-_Q" name="propertyName" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scKWgO5qEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sccqYO5qEeK0p4PkXjd-_Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_sdl54O5qEeK0p4PkXjd-_Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_GOgVMO5VEeK0p4PkXjd-_Q" name="setValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_P9Ky4O5VEeK0p4PkXjd-_Q" name="view">
+ <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_pXFBcO5VEeK0p4PkXjd-_Q" name="value" type="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_iPmRwO3vEeKwLp35IbAIig" name="propertySetterRegistry_propertySetter_1" memberEnd="_iPmRwe3vEeKwLp35IbAIig _iPT94O3vEeKwLp35IbAIig">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_iPmRwe3vEeKwLp35IbAIig" name="propertySetterRegistry" type="_q85OgO3uEeKwLp35IbAIig" association="_iPmRwO3vEeKwLp35IbAIig">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPmRwu3vEeKwLp35IbAIig" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPmRw-3vEeKwLp35IbAIig" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_4DImMO5VEeK0p4PkXjd-_Q" name="propertySetter_property_1" memberEnd="_4DImMe5VEeK0p4PkXjd-_Q _4C8Y8O5VEeK0p4PkXjd-_Q">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_4DImMe5VEeK0p4PkXjd-_Q" name="propertySetter" type="_fyVlIO3vEeKwLp35IbAIig" association="_4DImMO5VEeK0p4PkXjd-_Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4DImMu5VEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4DImM-5VEeK0p4PkXjd-_Q" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_R-WVkO5XEeK0p4PkXjd-_Q" name="FillPropertySetter">
+ <generalization xmi:type="uml:Generalization" xmi:id="_Y8pkcO5XEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Ue7b8O5XEeK0p4PkXjd-_Q" name="IsValidPropertySetter">
+ <generalization xmi:type="uml:Generalization" xmi:id="_ZxycsO5XEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_JSMf8O5mEeK0p4PkXjd-_Q" name="StringToPropertySetter">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_NBuFsO5mEeK0p4PkXjd-_Q" name="key" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PgE-gO5mEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PgdZAO5mEeK0p4PkXjd-_Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Phgh4O5mEeK0p4PkXjd-_Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_QfjegO5mEeK0p4PkXjd-_Q" name="value" type="_fyVlIO3vEeKwLp35IbAIig" aggregation="composite" association="_QfvrwO5mEeK0p4PkXjd-_Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qfjege5mEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qfjegu5mEeK0p4PkXjd-_Q" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_QfvrwO5mEeK0p4PkXjd-_Q" name="stringToPropertySetter_propertySetter_1" memberEnd="_Qfvrwe5mEeK0p4PkXjd-_Q _QfjegO5mEeK0p4PkXjd-_Q">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_Qfvrwe5mEeK0p4PkXjd-_Q" name="stringToPropertySetter" type="_JSMf8O5mEeK0p4PkXjd-_Q" association="_QfvrwO5mEeK0p4PkXjd-_Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qfvrwu5mEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qfvrw-5mEeK0p4PkXjd-_Q" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_hmkp0O5mEeK0p4PkXjd-_Q" name="propertySetterRegistry_stringToPropertySetter_1" memberEnd="_hmkp0e5mEeK0p4PkXjd-_Q _hmejMO5mEeK0p4PkXjd-_Q">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_hmkp0e5mEeK0p4PkXjd-_Q" name="propertySetterRegistry" type="_q85OgO3uEeKwLp35IbAIig" association="_hmkp0O5mEeK0p4PkXjd-_Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hmkp0u5mEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hmkp0-5mEeK0p4PkXjd-_Q" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-z_6YO5zEeK0p4PkXjd-_Q" name="NullPropertySetter">
+ <generalization xmi:type="uml:Generalization" xmi:id="_Co0P0O50EeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Qeyn4O7GEeK0p4PkXjd-_Q" name="ComputePropertyValueCommand"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_XZJOcO8UEeK0p4PkXjd-_Q" name="ComputePropertyValueCommandItf">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_uYMx4O8ZEeK0p4PkXjd-_Q" name="getCmdValue" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_f0BhUO8aEeK0p4PkXjd-_Q">
+ <body> * Execute the command and return the computed value.&#xD;
+ * Compute the value of the Property, and return it.&#xD;
+ * @return The computed value of the Property.&#xD;
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_zjYdUO8ZEeK0p4PkXjd-_Q" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_rEb-0O-MEeK0p4PkXjd-_Q" name="abstractLayer_property_1" memberEnd="_rEb-0e-MEeK0p4PkXjd-_Q _rEPKgO-MEeK0p4PkXjd-_Q">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_rEb-0e-MEeK0p4PkXjd-_Q" name="abstractLayer" type="_51zAINa7EeKPiuTfpuvqHA" association="_rEb-0O-MEeK0p4PkXjd-_Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rEb-0u-MEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rEb-0--MEeK0p4PkXjd-_Q" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RnjeUO-YEeK0p4PkXjd-_Q" name="LineType">
+ <generalization xmi:type="uml:Generalization" xmi:id="_UJAucO-YEeK0p4PkXjd-_Q" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ZGwa0O-YEeK0p4PkXjd-_Q" name="LineInstance">
+ <generalization xmi:type="uml:Generalization" xmi:id="_ijurkO-YEeK0p4PkXjd-_Q" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_vpaIYO-YEeK0p4PkXjd-_Q" name="lineColor" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x1KOQO-YEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x1iowO-YEeK0p4PkXjd-_Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_x2frAO-YEeK0p4PkXjd-_Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_yrVBQO-YEeK0p4PkXjd-_Q" name="lineWith" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1JMK0O-YEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1JbbYO-YEeK0p4PkXjd-_Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1KSXAO-YEeK0p4PkXjd-_Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_JgyOsO-cEeK0p4PkXjd-_Q" name="LinePropertySetter">
+ <generalization xmi:type="uml:Generalization" xmi:id="_QKhi0O-cEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Gvwp0O-iEeK0p4PkXjd-_Q" name="FontPropertySetter">
+ <generalization xmi:type="uml:Generalization" xmi:id="_LuAFcO-iEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_OtShEO-iEeK0p4PkXjd-_Q" name="FontInstance">
+ <generalization xmi:type="uml:Generalization" xmi:id="_VH6bIO-iEeK0p4PkXjd-_Q" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Xlt6UO-iEeK0p4PkXjd-_Q" name="fontColor" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aTOpcO-iEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aTnD8O-iEeK0p4PkXjd-_Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_vcdF8O-iEeK0p4PkXjd-_Q" value="15053796"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_bD8UsO-iEeK0p4PkXjd-_Q" name="fontName" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dY9rUO-iEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dZWF0O-iEeK0p4PkXjd-_Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_sZKUEO-iEeK0p4PkXjd-_Q" value="Segoe UI"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_epxy8O-iEeK0p4PkXjd-_Q" name="fontHeigh" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_heIw8O-iEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hebE0O-iEeK0p4PkXjd-_Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_x9IS8O-iEeK0p4PkXjd-_Q" value="9"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_inEu8O-iEeK0p4PkXjd-_Q" name="bold" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k3zbcO-iEeK0p4PkXjd-_Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k4L18O-iEeK0p4PkXjd-_Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_0K5LAO-iEeK0p4PkXjd-_Q" value="true"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Q6ta4O-iEeK0p4PkXjd-_Q" name="FontType">
+ <generalization xmi:type="uml:Generalization" xmi:id="_UKLAgO-iEeK0p4PkXjd-_Q" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_xZ-bMO-lEeK0p4PkXjd-_Q" name="IsVisiblePropertySetter">
+ <generalization xmi:type="uml:Generalization" xmi:id="_01zB0O-lEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_GKddUAkdEeOnVqX9VcfeWQ" name="LayerOperatorDescriptor">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_5xnb4AkdEeOnVqX9VcfeWQ" name="propertyOperators" type="_wk7C0AkdEeOnVqX9VcfeWQ" isOrdered="true" association="_5x5vwAkdEeOnVqX9VcfeWQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5xnb4QkdEeOnVqX9VcfeWQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5xnb4gkdEeOnVqX9VcfeWQ" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ysOUQAkiEeOnVqX9VcfeWQ" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1AnYwAkiEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1A5soAkiEeOnVqX9VcfeWQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1B2u4AkiEeOnVqX9VcfeWQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_w5x7sAkhEeOnVqX9VcfeWQ" name="getPropertyOperator" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_C90I4AkiEeOnVqX9VcfeWQ" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_MNkdAAkiEeOnVqX9VcfeWQ" name="return" type="_wk7C0AkdEeOnVqX9VcfeWQ" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_TzuWEAkiEeOnVqX9VcfeWQ" name="setPropertyOperator">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_boCm8AkiEeOnVqX9VcfeWQ" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_eeXT0AkiEeOnVqX9VcfeWQ" name="operator" type="_wk7C0AkdEeOnVqX9VcfeWQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_htp6UAkiEeOnVqX9VcfeWQ" name="createLayerOperator">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_rwGPoAkiEeOnVqX9VcfeWQ" name="return" type="_WuVRUNjjEeKQqZMBCFd2Uw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_oj_4UAkoEeOnVqX9VcfeWQ" name="setPropertyCollectionSize">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_x-5FcAkoEeOnVqX9VcfeWQ">
+ <body>Set the size of the property collection declared in the PropertyRegistry.&#xD;
+Setting the size allow to set the size of the lists indexed with Properties' index (like propertyOperators).</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_wdouEAkoEeOnVqX9VcfeWQ" name="size" type="_SuHkkNa8EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_x2wVwAkrEeOnVqX9VcfeWQ" name="defaultPropertyOperator" type="_G-g6AAkpEeOnVqX9VcfeWQ"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_KSvhUAkdEeOnVqX9VcfeWQ" name="abstractLayerOperator_layerOperatorDescriptor_1" memberEnd="_KSvhUQkdEeOnVqX9VcfeWQ _KSjUEAkdEeOnVqX9VcfeWQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_KSvhUQkdEeOnVqX9VcfeWQ" name="abstractLayerOperator" type="_WuVRUNjjEeKQqZMBCFd2Uw" association="_KSvhUAkdEeOnVqX9VcfeWQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KSvhUgkdEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KSvhUwkdEeOnVqX9VcfeWQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_T5we4AkdEeOnVqX9VcfeWQ" name="LayerOperatorDescriptorRegistry">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_X8IIIAkdEeOnVqX9VcfeWQ" name="descriptors" type="_GKddUAkdEeOnVqX9VcfeWQ" aggregation="composite" association="_X8acAAkdEeOnVqX9VcfeWQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X8IIIQkdEeOnVqX9VcfeWQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X8IIIgkdEeOnVqX9VcfeWQ" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_31bcAAkdEeOnVqX9VcfeWQ" name="propertyOperators" type="_wk7C0AkdEeOnVqX9VcfeWQ" isOrdered="true" aggregation="composite" association="_31lNAAkdEeOnVqX9VcfeWQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_31bcAQkdEeOnVqX9VcfeWQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_31bcAgkdEeOnVqX9VcfeWQ" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_TfMTsAkmEeOnVqX9VcfeWQ" name="propertyCollectionSize" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Z8ZnsAkmEeOnVqX9VcfeWQ">
+ <body>This represents the number of Properties that are declared in the PrpertyRegistry.&#xD;
+This number is used to initialized the collections indexed by Properties' index &#xD;
+(like LayerOperatorDescriptor::propertyOperators).&#xD;
+&lt;br>&#xD;
+This number should be set before any call to addLayerOperatorDescriptor.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XrjmcAkmEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Xr8A8AkmEeOnVqX9VcfeWQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Xs5DMAkmEeOnVqX9VcfeWQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_rTr0UA2fEeOjX-JbGFEH7w" name="defaultOperator" visibility="public" type="_G-g6AAkpEeOnVqX9VcfeWQ" isReadOnly="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_xzwPEA2fEeOjX-JbGFEH7w">
+ <body>The default Operator used when the propertiesListSize are set.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_usAbAA2fEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_usUkEA2fEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_utH1UA2fEeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_ZjkYUAkjEeOnVqX9VcfeWQ" name="addLayerOperatorDescriptor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_kc_Y8AkjEeOnVqX9VcfeWQ" name="descriptor" type="_GKddUAkdEeOnVqX9VcfeWQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_sQbgEAkjEeOnVqX9VcfeWQ" name="getLayerOperatorDescriptor" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_sQbgEQkjEeOnVqX9VcfeWQ" name="descriptor" type="_GKddUAkdEeOnVqX9VcfeWQ" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_0hL1UAkjEeOnVqX9VcfeWQ" name="name" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_6Ui7EAkjEeOnVqX9VcfeWQ" name="addPropertyOperator">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="__1tdkAkjEeOnVqX9VcfeWQ" name="operator" type="_wk7C0AkdEeOnVqX9VcfeWQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_HQzWIAkkEeOnVqX9VcfeWQ" name="getPropertyOperator" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_HQzWIQkkEeOnVqX9VcfeWQ" name="operator" type="_wk7C0AkdEeOnVqX9VcfeWQ" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_M6KLUAkkEeOnVqX9VcfeWQ" name="name" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_U3cyAAkkEeOnVqX9VcfeWQ" name="attachOperatorToDescriptor" raisedException="_k-dZENxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_v9TU8A0JEeOjX-JbGFEH7w" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_csy9oAkkEeOnVqX9VcfeWQ" name="operatorName" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_hIyn0AkkEeOnVqX9VcfeWQ" name="layerDescriptorName" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_p1keQBKGEeO9e9pZ1EIGJg" name="createLayerOperator" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_p1keQRKGEeO9e9pZ1EIGJg" name="return" type="_WuVRUNjjEeKQqZMBCFd2Uw" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_vtq6EBKGEeO9e9pZ1EIGJg" name="layerOperatorID" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_X8acAAkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptorRegistry_layerOperatorDescriptor_1" memberEnd="_X8acAQkdEeOnVqX9VcfeWQ _X8IIIAkdEeOnVqX9VcfeWQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_X8acAQkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptorRegistry" type="_T5we4AkdEeOnVqX9VcfeWQ" association="_X8acAAkdEeOnVqX9VcfeWQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X8acAgkdEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X8acAwkdEeOnVqX9VcfeWQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wk7C0AkdEeOnVqX9VcfeWQ" name="PropertyOperator">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_8J3zEAklEeOnVqX9VcfeWQ" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8J3zEQklEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8J3zEgklEeOnVqX9VcfeWQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_8J3zEwklEeOnVqX9VcfeWQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_WKdZYAkhEeOnVqX9VcfeWQ" name="getComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_WKdZYQkhEeOnVqX9VcfeWQ">
+ <body>Get the ComputePropertyValueCommands for the specified views and Property.&#xD;
+@return A list of Command allowing to get the value of the property for each view. The list contains null if no command is available for a View.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_WKdZYwkhEeOnVqX9VcfeWQ" name="property" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lkDZkAkhEeOnVqX9VcfeWQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lkVtcAkhEeOnVqX9VcfeWQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_WKdZZAkhEeOnVqX9VcfeWQ" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_31lNAAkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptorRegistry_propertyOperator_1" memberEnd="_31lNAQkdEeOnVqX9VcfeWQ _31bcAAkdEeOnVqX9VcfeWQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_31lNAQkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptorRegistry" type="_T5we4AkdEeOnVqX9VcfeWQ" association="_31lNAAkdEeOnVqX9VcfeWQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_31lNAgkdEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_31lNAwkdEeOnVqX9VcfeWQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_5x5vwAkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptor_propertyOperator_1" memberEnd="_5x5vwQkdEeOnVqX9VcfeWQ _5xnb4AkdEeOnVqX9VcfeWQ">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_5x5vwQkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptor" type="_GKddUAkdEeOnVqX9VcfeWQ" association="_5x5vwAkdEeOnVqX9VcfeWQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5x5vwgkdEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5x5vwwkdEeOnVqX9VcfeWQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_G-g6AAkpEeOnVqX9VcfeWQ" name="DefaultPropertyOperator">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_MkVTAAkpEeOnVqX9VcfeWQ">
+ <body>This DefaultPropertyOperator works for any Property.&#xD;
+It returns the first value of the provided list.</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="_LAjzIAkpEeOnVqX9VcfeWQ" general="_wk7C0AkdEeOnVqX9VcfeWQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ELKvAAkxEeOnVqX9VcfeWQ" name="TopLayerOperatorDescriptor">
+ <generalization xmi:type="uml:Generalization" xmi:id="_ON-3wAkxEeOnVqX9VcfeWQ" general="_GKddUAkdEeOnVqX9VcfeWQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Hxsw0AkxEeOnVqX9VcfeWQ" name="StackedLayerOperatorDescriptor">
+ <generalization xmi:type="uml:Generalization" xmi:id="_PQ9-wAkxEeOnVqX9VcfeWQ" general="_GKddUAkdEeOnVqX9VcfeWQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_mt6gYAnsEeOnVqX9VcfeWQ" name="CustomPropertyOperator">
+ <generalization xmi:type="uml:Generalization" xmi:id="_SfZjMAntEeOnVqX9VcfeWQ" general="_wk7C0AkdEeOnVqX9VcfeWQ"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_yEySAAnsEeOnVqX9VcfeWQ" name="classname" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yEySAQnsEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yEySAgnsEeOnVqX9VcfeWQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yEySAwnsEeOnVqX9VcfeWQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_XTdvIAntEeOnVqX9VcfeWQ" name="operatorInstance" visibility="public" type="__ADTwAxLEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cqOYcAntEeOnVqX9VcfeWQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cqgsUAntEeOnVqX9VcfeWQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_crLasAntEeOnVqX9VcfeWQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_XwmlsA3gEeOjX-JbGFEH7w" name="classBundleID" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_c4HSEA3gEeOjX-JbGFEH7w">
+ <body>Bundle ID of the class specified by classname.&#xD;
+This is generally the id of the plugin containing the class specified by classname.&#xD;
+This is required when the custom operator is defined by its classname, and the operator is not located in the current &#xD;
+plugin (ie the layer model plugin).&#xD;
+</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XwnMwA3gEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XwnMwQ3gEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_XwnMwg3gEeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_vbiJ8A3gEeOjX-JbGFEH7w" name="resetOperatorInstance" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_y6QTkA3gEeOjX-JbGFEH7w">
+ <body>Set the operator instance from the classname and BundleID if and only if this two properties are set.</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_FDpEUAxAEeOjX-JbGFEH7w" name="layersStackApplication_layerOperatorDescriptorRegistry_1" memberEnd="_FDpEUQxAEeOjX-JbGFEH7w _FDc3EAxAEeOjX-JbGFEH7w">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_FDpEUQxAEeOjX-JbGFEH7w" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_FDpEUAxAEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDpEUgxAEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDpEUwxAEeOjX-JbGFEH7w" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_G7XE0AxJEeOjX-JbGFEH7w" name="AndStackedLayerOperatorDescriptor">
+ <generalization xmi:type="uml:Generalization" xmi:id="_Uq4v4AxJEeOjX-JbGFEH7w" general="_Hxsw0AkxEeOnVqX9VcfeWQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_LUfBMAxJEeOjX-JbGFEH7w" name="OrStackedLayerOperatorDescriptor">
+ <generalization xmi:type="uml:Generalization" xmi:id="_TzDwAAxJEeOjX-JbGFEH7w" general="_Hxsw0AkxEeOnVqX9VcfeWQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="__ADTwAxLEeOjX-JbGFEH7w" name="CustomPropertyOpertorInstance"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Xxh1cBZ1EeOZwp016gnCFQ" name="IsAbstractUmlSetter">
+ <generalization xmi:type="uml:Generalization" xmi:id="_a8mqUBZ1EeOZwp016gnCFQ" general="_fyVlIO3vEeKwLp35IbAIig"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_7cWpgFVHEeOah7Z-UYdQAA" name="EventLevel">
+ <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_ItnrQFVIEeOah7Z-UYdQAA" name="level1"/>
+ <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="__fkAQFVHEeOah7Z-UYdQAA" name="allLevels">
+ <specification xmi:type="uml:LiteralInteger" xmi:id="_gy8lIFVLEeOah7Z-UYdQAA" name="intValue" value="-1"/>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_PznBc2Q5EeOlpfB_tZS-QA" name="layerExpression_layersStack_1" memberEnd="_PznBdGQ5EeOlpfB_tZS-QA _PznBcGQ5EeOlpfB_tZS-QA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_KyI2MGQ6EeOlpfB_tZS-QA" annotatedElement="_PznBc2Q5EeOlpfB_tZS-QA">
+ <body>The LayerStack owning this LayerExpression.&#xD;
+This property is set by the LayerStack when the LayerExpression is attach to a parent.&#xD;
+The LayerStack listen to node addition/removal.&#xD;
+During the load from the Resource, this property is set by the LayerStack calling &#xD;
+layerStackChanged().</body>
+ </ownedComment>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_PznBdGQ5EeOlpfB_tZS-QA" name="layerExpression" type="_9IaAANjiEeKQqZMBCFd2Uw" association="_PznBc2Q5EeOlpfB_tZS-QA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PznBdWQ5EeOlpfB_tZS-QA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PznBdmQ5EeOlpfB_tZS-QA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ft-hUGtpEeOlpfB_tZS-QA" name="AllViewsDerivedLayer">
+ <generalization xmi:type="uml:Generalization" xmi:id="_p-dSoGtpEeOlpfB_tZS-QA" general="_51zAINa7EeKPiuTfpuvqHA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_8__xgHltEeOlpfB_tZS-QA" name="LayerState">
+ <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_AKMcoHluEeOlpfB_tZS-QA" name="detached"/>
+ <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_BUS4QHluEeOlpfB_tZS-QA" name="attached"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_RopgYHpGEeOlpfB_tZS-QA" name="LayersContainer">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_igIa4HpGEeOlpfB_tZS-QA" annotatedElement="_RopgYHpGEeOlpfB_tZS-QA">
+ <body>Layers implementing this interface can contains others layers.&#xD;
+The interface provide one method allowing to add a LayerExpression to the container.</body>
+ </ownedComment>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_jHtYQHpGEeOlpfB_tZS-QA" name="addLayer">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_qpEQ4HpGEeOlpfB_tZS-QA" name="layer" type="_9IaAANjiEeKQqZMBCFd2Uw"/>
+ </ownedOperation>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_X07z8LcsEeK8_t7Rpq6ZJA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_X2lZwLcsEeK8_t7Rpq6ZJA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_ZYU5ULcsEeK8_t7Rpq6ZJA" base_Package="_gAOFQLcqEeK8_t7Rpq6ZJA" nsPrefix="" nsURI="org.eclipse.papyrus.layers.0.10" basePackage="org.eclipse.papyrus.layers.stackmodel"/>
+ <Ecore:EDataType xmi:id="_Yn8ysL12EeKr1s-73D4BvA" instanceClassName="java.lang.String" base_PrimitiveType="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ <Ecore:EDataType xmi:id="_WynUwNa8EeKPiuTfpuvqHA" instanceClassName="int" base_PrimitiveType="_SuHkkNa8EeKPiuTfpuvqHA"/>
+ <Ecore:EDataType xmi:id="_ZDhncNa8EeKPiuTfpuvqHA" instanceClassName="boolean" base_PrimitiveType="_TqqsYNa8EeKPiuTfpuvqHA"/>
+ <Ecore:EDataType xmi:id="_g9dZMNheEeKgkM6XJF9t4A" instanceClassName="java.lang.Object" base_PrimitiveType="_c1QNsNheEeKgkM6XJF9t4A"/>
+ <Ecore:EDataType xmi:id="_qHjKMNheEeKgkM6XJF9t4A" instanceClassName="org.eclipse.emf.ecore.EPackage" base_PrimitiveType="_lVnFMNheEeKgkM6XJF9t4A"/>
+ <Ecore:EClass xmi:id="_Tfa8wNjMEeKgkM6XJF9t4A" instanceClassName="java.util.Map$Entry" base_Class="_vMMQsNjKEeKgkM6XJF9t4A"/>
+ <Ecore:EReference xmi:id="_l2jl8NjpEeKQqZMBCFd2Uw" isTransient="true" base_Property="_DYWsYNjpEeKQqZMBCFd2Uw"/>
+ <Ecore:EReference xmi:id="_r_t8kNjpEeKQqZMBCFd2Uw" isTransient="true" base_Property="_EEc9YNjpEeKQqZMBCFd2Uw"/>
+ <Ecore:EClass xmi:id="_XsrZ0NjsEeKQqZMBCFd2Uw" instanceClassName="java.util.Map$Entry" base_Class="_hgu_wNjqEeKQqZMBCFd2Uw"/>
+ <Ecore:EClass xmi:id="_gxK-gNj_EeKQqZMBCFd2Uw" instanceClassName="java.util.Map$Entry" base_Class="_P4xeANj_EeKQqZMBCFd2Uw"/>
+ <Ecore:EReference xmi:id="_CihYINt8EeKwptaAAanMDg" isTransient="true" base_Property="_5rptsNqBEeKQqZMBCFd2Uw"/>
+ <Ecore:EReference xmi:id="_GbspINt8EeKwptaAAanMDg" isTransient="true" base_Property="_wRCXENt2EeKQqZMBCFd2Uw"/>
+ <Ecore:EReference xmi:id="_cqKPYNt8EeKwptaAAanMDg" isTransient="true" base_Property="_wROkUdt2EeKQqZMBCFd2Uw"/>
+ <Ecore:EDataType xmi:id="_qcE4UNxGEeKwptaAAanMDg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.LayersException" base_PrimitiveType="_iYKFMNxGEeKwptaAAanMDg"/>
+ <Ecore:EDataType xmi:id="_4RuZgNxGEeKwptaAAanMDg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.NotFoundException" base_PrimitiveType="_k-dZENxGEeKwptaAAanMDg"/>
+ <Ecore:EDataType xmi:id="_PWPEsNxMEeKwptaAAanMDg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.BadStateException" base_PrimitiveType="_KG7HMNxMEeKwptaAAanMDg"/>
+ <Ecore:EClass xmi:id="_cyLGsO5mEeK0p4PkXjd-_Q" instanceClassName="java.util.Map$Entry" base_Class="_JSMf8O5mEeK0p4PkXjd-_Q"/>
+ <Ecore:EDataType xmi:id="_UdUS8O7GEeK0p4PkXjd-_Q" instanceClassName="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand" base_PrimitiveType="_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+ <Ecore:EReference xmi:id="_Bw8NMO7jEeK0p4PkXjd-_Q" isTransient="true" base_Property="_3F7c4O3uEeKwLp35IbAIig"/>
+ <Ecore:EReference xmi:id="_ByAHsO7kEeK0p4PkXjd-_Q" isTransient="true" base_Property="_3GHqIe3uEeKwLp35IbAIig"/>
+ <Ecore:EParameter xmi:id="_8ebqYO7lEeK0p4PkXjd-_Q" base_Parameter="_xfz8Ue7HEeK0p4PkXjd-_Q"/>
+ <Ecore:EParameter xmi:id="_8I1QAO70EeK0p4PkXjd-_Q" base_Parameter="_8ILIsu70EeK0p4PkXjd-_Q"/>
+ <Ecore:EClass xmi:id="_ZDqPgO8UEeK0p4PkXjd-_Q" instanceClassName="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand" base_Interface="_XZJOcO8UEeK0p4PkXjd-_Q"/>
+ <Ecore:EReference xmi:id="_EZ4kIO-NEeK0p4PkXjd-_Q" isTransient="true" base_Property="_rEPKgO-MEeK0p4PkXjd-_Q"/>
+ <Ecore:EReference xmi:id="_dF0wYAkeEeOnVqX9VcfeWQ" isTransient="true" base_Property="_5xnb4AkdEeOnVqX9VcfeWQ"/>
+ <Ecore:EReference xmi:id="_hXqZAAkeEeOnVqX9VcfeWQ" isTransient="true" base_Property="_31bcAAkdEeOnVqX9VcfeWQ"/>
+ <Ecore:EReference xmi:id="_hIIUsAw-EeOjX-JbGFEH7w" isTransient="true" base_Property="_X8IIIAkdEeOnVqX9VcfeWQ"/>
+ <Ecore:EReference xmi:id="_0vze4Aw-EeOjX-JbGFEH7w" isTransient="true" base_Property="_KSjUEAkdEeOnVqX9VcfeWQ"/>
+ <Ecore:EReference xmi:id="_i_yH8AxAEeOjX-JbGFEH7w" isTransient="true" base_Property="_FDc3EAxAEeOjX-JbGFEH7w"/>
+ <Ecore:EAttribute xmi:id="_B49pUAxGEeOjX-JbGFEH7w" isTransient="true" base_Property="_mCUIAAxEEeOjX-JbGFEH7w"/>
+ <Ecore:EDataType xmi:id="_Fya_cAxMEeOjX-JbGFEH7w" instanceClassName="org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance" base_PrimitiveType="__ADTwAxLEeOjX-JbGFEH7w"/>
+ <Ecore:EReference xmi:id="_1yMvsA2hEeOjX-JbGFEH7w" isTransient="true" base_Property="_rTr0UA2fEeOjX-JbGFEH7w"/>
+ <Ecore:EAttribute xmi:id="_iczSMA2qEeOjX-JbGFEH7w" isTransient="true" base_Property="_RrX8YA2qEeOjX-JbGFEH7w"/>
+ <Ecore:EAttribute xmi:id="_8zffIGQ7EeOlpfB_tZS-QA" isTransient="true" base_Property="_xcbgQGQ7EeOlpfB_tZS-QA"/>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.di b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.di
new file mode 100644
index 00000000000..24836148713
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.di
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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="layersconfig.notation#_RgieEBHLEeOjX-JbGFEH7w"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layersconfig.notation#_ute5YBHLEeOjX-JbGFEH7w"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layersconfig.notation#_CKUFgBHMEeOjX-JbGFEH7w"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="layersconfig.notation#_3oDWwBQzEeO9e9pZ1EIGJg"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="layersconfig.notation#_RgieEBHLEeOjX-JbGFEH7w"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layersconfig.notation#_ute5YBHLEeOjX-JbGFEH7w"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layersconfig.notation#_CKUFgBHMEeOjX-JbGFEH7w"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="layersconfig.notation#_3oDWwBQzEeO9e9pZ1EIGJg"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.ecore b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.ecore
new file mode 100644
index 00000000000..e314dd09a61
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.ecore
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="layersconfig" nsURI="org.eclipse.papyrus.layersconfig.0.10"
+ nsPrefix="layersconfig">
+ <eClassifiers xsi:type="ecore:EClass" name="Folder" eSuperTypes="#//FolderElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="folderElements" ordered="false"
+ upperBound="-1" eType="#//FolderElement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FolderElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerOperatorConfig" eSuperTypes="#//InstanciableElement">
+ <eOperations name="createLayersOperatorDescriptor" ordered="false" lowerBound="1"
+ eType="#//LayerOperatorDescriptor" eExceptions="#//InstanciationException"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstanciableElement" abstract="true"
+ eSuperTypes="#//FolderElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="classname" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="bundleID" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="iconPath" ordered="false"
+ lowerBound="1" eType="#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="classnameKind" ordered="false"
+ lowerBound="1" eType="#//ClassnameKind" defaultValueLiteral="UNDEFINED"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ClassnameKind">
+ <eLiterals name="UNDEFINED"/>
+ <eLiterals name="EMF_CLASSNAME" value="1"/>
+ <eLiterals name="POJO_CLASSNAME" value="2"/>
+ <eLiterals name="NOT_FOUND" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="InstanciationException" instanceClassName="org.eclipse.papyrus.layers.stackmodel.InstanciationException"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="LayerOperatorDescriptor" instanceClassName="org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor"/>
+ <eClassifiers xsi:type="ecore:EClass" name="OperatorConfig" eSuperTypes="#//InstanciableElement">
+ <eOperations name="createOperatorDescriptor" ordered="false" lowerBound="1" eType="#//PropertyOperator"
+ eExceptions="#//InstanciationException"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="PropertyOperator" instanceClassName="org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertyId" eSuperTypes="#//FolderElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeConfig"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypeConfig" eSuperTypes="#//FolderElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="LayerOperatorMultipleBinding" eSuperTypes="#//FolderElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layerOperatorConfig" ordered="false"
+ lowerBound="1" eType="#//LayerOperatorConfig"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" ordered="false"
+ upperBound="-1" eType="#//OperatorBinding" containment="true" eOpposite="#//OperatorBinding/owner"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OperatorBinding">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operator" ordered="false"
+ lowerBound="1" eType="#//OperatorConfig"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layerOperatorConfig" ordered="false"
+ lowerBound="1" eType="#//LayerOperatorConfig" changeable="false" volatile="true"
+ transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertyId" ordered="false"
+ lowerBound="1" eType="#//PropertyId"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false"
+ lowerBound="1" eType="#//LayerOperatorMultipleBinding" eOpposite="#//LayerOperatorMultipleBinding/bindings"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.genmodel b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.genmodel
new file mode 100644
index 00000000000..13d38185beb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.genmodel
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+ modelDirectory="/org.eclipse.papyrus.layers.stackmodel/src" modelPluginID="org.eclipse.papyrus.layers.stackmodel"
+ modelName="Layersconfig" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="6.0" copyrightFields="false"
+ operationReflection="true" importOrganizing="true">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+ <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+ <details key="UNION_PROPERTIES" value="REPORT"/>
+ <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+ <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+ <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+ <details key="COMMENTS" value="PROCESS"/>
+ <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+ <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+ <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+ <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+ <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+ <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+ <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+ <details key="DERIVED_FEATURES" value="PROCESS"/>
+ <details key="OPERATION_BODIES" value="IGNORE"/>
+ <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+ <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+ </genAnnotations>
+ <foreignModel>layersconfig.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="Layersconfig" basePackage="org.eclipse.papyrus.layers.configmodel"
+ disposableProviderFactory="true" ecorePackage="layersconfig.ecore#/">
+ <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="layersconfig.ecore#//ClassnameKind">
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layersconfig.ecore#//ClassnameKind/UNDEFINED"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layersconfig.ecore#//ClassnameKind/EMF_CLASSNAME"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layersconfig.ecore#//ClassnameKind/POJO_CLASSNAME"/>
+ <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layersconfig.ecore#//ClassnameKind/NOT_FOUND"/>
+ </genEnums>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layersconfig.ecore#//String"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layersconfig.ecore#//InstanciationException"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layersconfig.ecore#//LayerOperatorDescriptor"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layersconfig.ecore#//PropertyOperator"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//Folder">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layersconfig.ecore#//Folder/folderElements"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//FolderElement">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//FolderElement/name"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//LayerOperatorConfig">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layersconfig.ecore#//LayerOperatorConfig/createLayersOperatorDescriptor"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//InstanciableElement">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/classname"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/bundleID"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/displayName"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/iconPath"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/classnameKind"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//OperatorConfig">
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layersconfig.ecore#//OperatorConfig/createOperatorDescriptor"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//PropertyId">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layersconfig.ecore#//PropertyId/type"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//TypeConfig"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//LayerOperatorMultipleBinding">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layersconfig.ecore#//LayerOperatorMultipleBinding/layerOperatorConfig"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference layersconfig.ecore#//LayerOperatorMultipleBinding/bindings"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//OperatorBinding">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layersconfig.ecore#//OperatorBinding/operator"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+ createChild="false" ecoreFeature="ecore:EReference layersconfig.ecore#//OperatorBinding/layerOperatorConfig"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference layersconfig.ecore#//OperatorBinding/propertyId"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+ ecoreFeature="ecore:EReference layersconfig.ecore#//OperatorBinding/owner"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.notation b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.notation
new file mode 100644
index 00000000000..d54467198e0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.notation
@@ -0,0 +1,856 @@
+<?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/4.0.0/UML">
+ <notation:Diagram xmi:id="_RgieEBHLEeOjX-JbGFEH7w" type="PapyrusUMLClassDiagram" name="folders" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_dur18BHLEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dutEEBHLEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dutEERHLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dutrIBHLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dutrIRHLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dutrIhHLEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dutrIxHLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dutrJBHLEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_duuSMBHLEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_duuSMRHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_duuSMhHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_duuSMxHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_duuSNBHLEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_duuSNRHLEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_duuSNhHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_duuSNxHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_duuSOBHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_duuSORHLEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_duu5QBHLEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_duu5QRHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_duu5QhHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_duu5QxHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_duu5RBHLEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_dupZsBHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dur18RHLEeOjX-JbGFEH7w" x="115" y="126"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_e8RDYBHLEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e8SRgBHLEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e8SRgRHLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e8S4kBHLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e8S4kRHLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e8S4khHLEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e8S4kxHLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_e8S4lBHLEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_e8TfoBHLEeOjX-JbGFEH7w" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_8YepwBHLEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layersconfig.uml#_8YScgBHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8YepwRHLEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_e8TfoRHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_e8TfohHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_e8TfoxHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e8TfpBHLEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_e8TfpRHLEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_e8TfphHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_e8TfpxHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_e8TfqBHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e8TfqRHLEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_e8TfqhHLEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_e8TfqxHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_e8TfrBHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_e8TfrRHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e8UGsBHLEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_e6kaQBHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e8RDYRHLEeOjX-JbGFEH7w" x="438" y="132"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_RgieERHLEeOjX-JbGFEH7w"/>
+ <element xmi:type="uml:Model" href="layersconfig.uml#_RggB0BHLEeOjX-JbGFEH7w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_jmQGQBHLEeOjX-JbGFEH7w" type="4002" source="_dur18BHLEeOjX-JbGFEH7w" target="_e8RDYBHLEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jmQtUBHLEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jmRUYBHLEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_jmQGQRHLEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layersconfig.uml#_jl454BHLEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jmQGQhHLEeOjX-JbGFEH7w" points="[10, 6, -225, 0]$[233, 5, -2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jmVl0BHLEeOjX-JbGFEH7w" id="(0.9,0.34)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jmVl0RHLEeOjX-JbGFEH7w" id="(0.02,0.34)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_laRBkBHLEeOjX-JbGFEH7w" type="4001" source="_dur18BHLEeOjX-JbGFEH7w" target="_e8RDYBHLEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_laRooBHLEeOjX-JbGFEH7w" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_laRooRHLEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_laRoohHLEeOjX-JbGFEH7w" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_laRooxHLEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_laSPsBHLEeOjX-JbGFEH7w" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_laSPsRHLEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_laSPshHLEeOjX-JbGFEH7w" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_laSPsxHLEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_laSPtBHLEeOjX-JbGFEH7w" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_laSPtRHLEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_laS2wBHLEeOjX-JbGFEH7w" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_laS2wRHLEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_laRBkRHLEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layersconfig.uml#_lZ9fkBHLEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_laRBkhHLEeOjX-JbGFEH7w" points="[3, 8, -223, 0]$[226, 8, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_labZoBHLEeOjX-JbGFEH7w" id="(0.99,0.83)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_labZoRHLEeOjX-JbGFEH7w" id="(0.0,0.71)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_ute5YBHLEeOjX-JbGFEH7w" type="PapyrusUMLClassDiagram" name="datatypes" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_vyhO0BHLEeOjX-JbGFEH7w" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vyh14BHLEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vyh14RHLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vyh14hHLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vyh14xHLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vyh15BHLEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vyic8BHLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4WT00BHLEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT00RHLEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT00hHLEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT00xHLEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT01BHLEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT01RHLEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vyic8RHLEeOjX-JbGFEH7w" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vyic8hHLEeOjX-JbGFEH7w" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vyic8xHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vyic9BHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vyic9RHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyic9hHLEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vyic9xHLEeOjX-JbGFEH7w" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vyic-BHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vyic-RHLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vyic-hHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyic-xHLEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layersconfig.uml#_vyPiABHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyhO0RHLEeOjX-JbGFEH7w" x="102" y="96"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Z9ppsBKOEeO9e9pZ1EIGJg" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z9ppshKOEeO9e9pZ1EIGJg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z9ppsxKOEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z9zasBKOEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z9zasRKOEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z9zashKOEeO9e9pZ1EIGJg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z9zasxKOEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qxlg8xKOEeO9e9pZ1EIGJg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg9BKOEeO9e9pZ1EIGJg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg9RKOEeO9e9pZ1EIGJg" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg9hKOEeO9e9pZ1EIGJg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg9xKOEeO9e9pZ1EIGJg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg-BKOEeO9e9pZ1EIGJg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z9zatBKOEeO9e9pZ1EIGJg" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Z9zatRKOEeO9e9pZ1EIGJg" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Z9zathKOEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Z9zatxKOEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Z9zauBKOEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z9zauRKOEeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Z9zauhKOEeO9e9pZ1EIGJg" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Z9zauxKOEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Z9zavBKOEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Z9zavRKOEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z9zavhKOEeO9e9pZ1EIGJg"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layersconfig.uml#_Z9gfwBKOEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z9ppsRKOEeO9e9pZ1EIGJg" x="294" y="168" width="187"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nDfXMBKREeO9e9pZ1EIGJg" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nDfXMhKREeO9e9pZ1EIGJg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nDfXMxKREeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nDfXNBKREeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nDfXNRKREeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nDfXNhKREeO9e9pZ1EIGJg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nDfXNxKREeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qjsHgxKREeO9e9pZ1EIGJg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHhBKREeO9e9pZ1EIGJg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHhRKREeO9e9pZ1EIGJg" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHhhKREeO9e9pZ1EIGJg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHhxKREeO9e9pZ1EIGJg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHiBKREeO9e9pZ1EIGJg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nDfXOBKREeO9e9pZ1EIGJg" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nDfXORKREeO9e9pZ1EIGJg" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nDfXOhKREeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nDfXOxKREeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nDfXPBKREeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nDfXPRKREeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nDfXPhKREeO9e9pZ1EIGJg" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nDfXPxKREeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nDfXQBKREeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nDfXQRKREeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nDfXQhKREeO9e9pZ1EIGJg"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layersconfig.uml#_nDCrQBKREeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nDfXMRKREeO9e9pZ1EIGJg" x="282" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wT7yYBKSEeO9e9pZ1EIGJg" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wT7yYhKSEeO9e9pZ1EIGJg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wT7yYxKSEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wT7yZBKSEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wT7yZRKSEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wT7yZhKSEeO9e9pZ1EIGJg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wT7yZxKSEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zm5X8xKSEeO9e9pZ1EIGJg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X9BKSEeO9e9pZ1EIGJg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X9RKSEeO9e9pZ1EIGJg" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X9hKSEeO9e9pZ1EIGJg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X9xKSEeO9e9pZ1EIGJg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X-BKSEeO9e9pZ1EIGJg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wT7yaBKSEeO9e9pZ1EIGJg" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wT7yaRKSEeO9e9pZ1EIGJg" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wT7yahKSEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wT7yaxKSEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wT7ybBKSEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wT7ybRKSEeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wT7ybhKSEeO9e9pZ1EIGJg" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wT7ybxKSEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wT7ycBKSEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wT7ycRKSEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wT7ychKSEeO9e9pZ1EIGJg"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layersconfig.uml#_wTo3cBKSEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wT7yYRKSEeO9e9pZ1EIGJg" x="543" y="63"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_ute5YRHLEeOjX-JbGFEH7w"/>
+ <element xmi:type="uml:Model" href="layersconfig.uml#_RggB0BHLEeOjX-JbGFEH7w"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_CKUFgBHMEeOjX-JbGFEH7w" type="PapyrusUMLClassDiagram" name="overview" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_DDYbgBHMEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DDYbghHMEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DDZCkBHMEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DDZCkRHMEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DDZCkhHMEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DDZCkxHMEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DDZClBHMEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DDZClRHMEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DDZClhHMEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DDZClxHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DDZCmBHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DDZCmRHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDZCmhHMEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DDZCmxHMEeOjX-JbGFEH7w" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_RRr_IBKOEeO9e9pZ1EIGJg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layersconfig.uml#_RRZEMBKOEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RRr_IRKOEeO9e9pZ1EIGJg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DDZCnBHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DDZCnRHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DDZCnhHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDZCnxHMEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DDZpoBHMEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DDZpoRHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DDZpohHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DDZpoxHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDZppBHMEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_DDJyABHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDYbgRHMEeOjX-JbGFEH7w" x="42" y="366" width="188" height="163"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IFcAIBHMEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IFcnMBHMEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IFcnMRHMEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IFcnMhHMEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IFcnMxHMEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IFcnNBHMEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IFcnNRHMEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IFcnNhHMEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IFcnNxHMEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IFcnOBHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IFcnORHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IFcnOhHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IFcnOxHMEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IFdOQBHMEeOjX-JbGFEH7w" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_7iEewBKSEeO9e9pZ1EIGJg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layersconfig.uml#_aNsUABKSEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7iEewRKSEeO9e9pZ1EIGJg" x="38" y="37"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IFdOQRHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IFdOQhHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IFdOQxHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IFdORBHMEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IFdORRHMEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IFdORhHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IFdORxHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IFdOSBHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IFdOSRHMEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_IFGo8BHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IFcAIRHMEeOjX-JbGFEH7w" x="672" y="366" width="217" height="163"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Zqz7YBHMEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zq1JgBHMEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zq1JgRHMEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zq1JghHMEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zq1JgxHMEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zq1wkBHMEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zq1wkRHMEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Zq1wkhHMEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Zq1wkxHMEeOjX-JbGFEH7w" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_QbjqcBQlEeO9e9pZ1EIGJg" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layersconfig.uml#_8YScgBHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QbjqcRQlEeO9e9pZ1EIGJg" x="67" y="9"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Zq1wlBHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Zq1wlRHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Zq1wlhHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zq1wlxHMEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Zq2XoBHMEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Zq2XoRHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Zq2XohHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Zq2XoxHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zq2XpBHMEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Zq2-sBHMEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Zq2-sRHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Zq2-shHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Zq2-sxHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zq2-tBHMEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_e6kaQBHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zqz7YRHMEeOjX-JbGFEH7w" x="348" y="12" width="158" height="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qox4YBHMEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qoyfcBHMEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qoyfcRHMEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qoyfchHMEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qoyfcxHMEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qoyfdBHMEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qoyfdRHMEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qoyfdhHMEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qoyfdxHMEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qoyfeBHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qoyfeRHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qoyfehHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qoyfexHMEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qozGgBHMEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qozGgRHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qozGghHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qozGgxHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qozGhBHMEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qozGhRHMEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qozGhhHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qozGhxHMEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qozGiBHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qozGiRHMEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_qodvUBHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qox4YRHMEeOjX-JbGFEH7w" x="642" y="12" width="130" height="79"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_J7YYoBHNEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J7Y_sRHNEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J7ZmwBHNEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J7ZmwRHNEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J7ZmwhHNEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J7ZmwxHNEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J7ZmxBHNEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_J7ZmxRHNEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_J7ZmxhHNEeOjX-JbGFEH7w" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_QZqDoBHNEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layersconfig.uml#_QZd2YBHNEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QZqDoRHNEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_S9U6QBHNEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layersconfig.uml#_S9IF8BHNEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S9U6QRHNEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cNDZMBHNEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layersconfig.uml#_cMta8BHNEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cNDZMRHNEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gMAiEBHNEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layersconfig.uml#_gLlrUBHNEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gMAiERHNEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CcfcoBQnEeO9e9pZ1EIGJg" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layersconfig.uml#_CcFM8BQnEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CcfcoRQnEeO9e9pZ1EIGJg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_J7ZmxxHNEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_J7ZmyBHNEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_J7ZmyRHNEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J7ZmyhHNEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_J7ZmyxHNEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_J7ZmzBHNEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_J7ZmzRHNEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_J7ZmzhHNEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J7ZmzxHNEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_J7aN0BHNEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_J7aN0RHNEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_J7aN0hHNEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_J7aN0xHNEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J7aN1BHNEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_J6-I8BHNEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J7Y_sBHNEeOjX-JbGFEH7w" x="276" y="150" width="301" height="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hA-o8BHSEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hA_QABHSEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hA_QARHSEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hA_QAhHSEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hA_3EBHSEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hA_3ERHSEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hA_3EhHSEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hA_3ExHSEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hA_3FBHSEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hA_3FRHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hA_3FhHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hA_3FxHSEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hA_3GBHSEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hA_3GRHSEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hA_3GhHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hA_3GxHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hA_3HBHSEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hA_3HRHSEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hBAeIBHSEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hBAeIRHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hBAeIhHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hBAeIxHSEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hBAeJBHSEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_hAs8IBHSEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hA-o8RHSEeOjX-JbGFEH7w" x="306" y="486" width="145" height="66"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jLGXIBHSEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jLG-MBHSEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jLG-MRHSEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jLG-MhHSEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jLG-MxHSEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jLG-NBHSEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jLG-NRHSEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jLHlQBHSEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jLHlQRHSEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jLHlQhHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jLHlQxHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jLHlRBHSEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLHlRRHSEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jLHlRhHSEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jLHlRxHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jLHlSBHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jLHlSRHSEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLHlShHSEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jLIMUBHSEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jLIMURHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jLIMUhHSEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jLIMUxHSEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLIMVBHSEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_jKujsBHSEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLGXIRHSEeOjX-JbGFEH7w" x="516" y="486" width="125" height="67"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wp3IgBQmEeO9e9pZ1EIGJg" type="2006" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wp3vkBQmEeO9e9pZ1EIGJg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wp4WoBQmEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wp4WoRQmEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wp4WohQmEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wp4WoxQmEeO9e9pZ1EIGJg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wp4WpBQmEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wp4WpRQmEeO9e9pZ1EIGJg" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wp4WphQmEeO9e9pZ1EIGJg" type="7015">
+ <children xmi:type="notation:Shape" xmi:id="_zkftoBQmEeO9e9pZ1EIGJg" type="3017" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="layersconfig.uml#_zj87EBQmEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zkftoRQmEeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1AMPkBQmEeO9e9pZ1EIGJg" type="3017" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="layersconfig.uml#_0_1DMBQmEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1AMPkRQmEeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3ZQ_wBQmEeO9e9pZ1EIGJg" type="3017" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="layersconfig.uml#_3Y_6ABQmEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3ZQ_wRQmEeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5Oh4QBQmEeO9e9pZ1EIGJg" type="3017" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="layersconfig.uml#_5OQLcBQmEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5Oh4QRQmEeO9e9pZ1EIGJg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wp4WpxQmEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wp4WqBQmEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wp4WqRQmEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wp4WqhQmEeO9e9pZ1EIGJg"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="layersconfig.uml#_wpf8IBQmEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wp3IgRQmEeO9e9pZ1EIGJg" x="732" y="182" width="136"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a3bNIECrEeOxsL3-gu79hA" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a3naYECrEeOxsL3-gu79hA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a3naYUCrEeOxsL3-gu79hA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a3naYkCrEeOxsL3-gu79hA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a3naY0CrEeOxsL3-gu79hA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a3naZECrEeOxsL3-gu79hA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a3naZUCrEeOxsL3-gu79hA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a3naZkCrEeOxsL3-gu79hA" type="5038"/>
+ <element xmi:type="uml:Comment" href="layersconfig.uml#_a1IuIECrEeOxsL3-gu79hA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a3bNIUCrEeOxsL3-gu79hA" x="882" y="348" width="187"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_CKUFgRHMEeOjX-JbGFEH7w"/>
+ <element xmi:type="uml:Model" href="layersconfig.uml#_RggB0BHLEeOjX-JbGFEH7w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_cNhIsBHMEeOjX-JbGFEH7w" type="4002" source="_DDYbgBHMEeOjX-JbGFEH7w" target="_J7YYoBHNEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cNhvwBHMEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cNhvwRHMEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_cNhIsRHMEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layersconfig.uml#_cNPb4BHMEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cNhIshHMEeOjX-JbGFEH7w" points="[25, -10, -221, 86]$[238, -86, -8, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cNlaIBHMEeOjX-JbGFEH7w" id="(0.5569620253164557,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cNlaIRHMEeOjX-JbGFEH7w" id="(0.06986899563318777,0.9801324503311258)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_dXmWMBHMEeOjX-JbGFEH7w" type="4002" source="_IFcAIBHMEeOjX-JbGFEH7w" target="_J7YYoBHNEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_dXm9QBHMEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dXm9QRHMEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_dXmWMRHMEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layersconfig.uml#_dXPw4BHMEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dXmWMhHMEeOjX-JbGFEH7w" points="[2, -7, -30, 84]$[25, -83, -7, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dXrOsBHMEeOjX-JbGFEH7w" id="(0.5867768595041323,0.07)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dXrOsRHMEeOjX-JbGFEH7w" id="(0.8951965065502183,0.9668874172185431)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_wASvoBHMEeOjX-JbGFEH7w" type="4001" source="_jLGXIBHSEeOjX-JbGFEH7w" target="_qox4YBHMEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wATWsBHMEeOjX-JbGFEH7w" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wATWsRHMEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wATWshHMEeOjX-JbGFEH7w" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wATWsxHMEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wAT9wBHMEeOjX-JbGFEH7w" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wAT9wRHMEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wAT9whHMEeOjX-JbGFEH7w" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wAT9wxHMEeOjX-JbGFEH7w" x="55" y="49"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wAT9xBHMEeOjX-JbGFEH7w" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wAT9xRHMEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wAT9xhHMEeOjX-JbGFEH7w" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wAT9xxHMEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_wASvoRHMEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layersconfig.uml#_wAAbwBHMEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wASvohHMEeOjX-JbGFEH7w" points="[-2, -10, 8, 87]$[12, -81, 22, 16]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wAb5kBHMEeOjX-JbGFEH7w" id="(0.456,0.014925373134328358)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wAb5kRHMEeOjX-JbGFEH7w" id="(0.7538461538461538,0.7974683544303798)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4SBVQBHMEeOjX-JbGFEH7w" type="4002" source="_qox4YBHMEeOjX-JbGFEH7w" target="_Zqz7YBHMEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4SCjYBHMEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4SCjYRHMEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4SBVQRHMEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layersconfig.uml#_4R1vEBHMEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4SBVQhHMEeOjX-JbGFEH7w" points="[-9, -4, 144, 0]$[-145, -5, 8, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4SGNwBHMEeOjX-JbGFEH7w" id="(0.06923076923076923,0.4810126582278481)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4SGNwRHMEeOjX-JbGFEH7w" id="(0.9493670886075949,0.4594594594594595)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zA_rEBHNEeOjX-JbGFEH7w" type="4002" source="_J7YYoBHNEeOjX-JbGFEH7w" target="_Zqz7YBHMEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zBASIBHNEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zBASIRHNEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_zA_rERHNEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layersconfig.uml#_zAn3oBHNEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zA_rEhHNEeOjX-JbGFEH7w" points="[6, -6, 0, 78]$[-23, -70, -29, 14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zBD8gBHNEeOjX-JbGFEH7w" id="(0.27074235807860264,0.039735099337748346)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zBD8gRHNEeOjX-JbGFEH7w" id="(0.20253164556962025,0.8108108108108109)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_xgP3wBHSEeOjX-JbGFEH7w" type="4001" source="_hA-o8BHSEeOjX-JbGFEH7w" target="_DDYbgBHMEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_xgQe0BHSEeOjX-JbGFEH7w" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRF4BHSEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xgRF4RHSEeOjX-JbGFEH7w" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRF4hHSEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xgRF4xHSEeOjX-JbGFEH7w" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRF5BHSEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xgRF5RHSEeOjX-JbGFEH7w" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRF5hHSEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xgRs8BHSEeOjX-JbGFEH7w" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRs8RHSEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xgRs8hHSEeOjX-JbGFEH7w" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRs8xHSEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_xgP3wRHSEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layersconfig.uml#_xf7usBHSEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xgP3whHSEeOjX-JbGFEH7w" points="[-1, -2, 82, 0]$[-77, 2, 6, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xgZowBHSEeOjX-JbGFEH7w" id="(0.006896551724137931,0.25757575757575757)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xgZowRHSEeOjX-JbGFEH7w" id="(0.9620253164556962,0.8282208588957055)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_dm7HcBHTEeOjX-JbGFEH7w" type="4001" source="_hA-o8BHSEeOjX-JbGFEH7w" target="_jLGXIBHSEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_dm7ugBHTEeOjX-JbGFEH7w" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dm7ugRHTEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dm7ughHTEeOjX-JbGFEH7w" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dm7ugxHTEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dm8VkBHTEeOjX-JbGFEH7w" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dm8VkRHTEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dm8VkhHTEeOjX-JbGFEH7w" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dm8VkxHTEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dm8VlBHTEeOjX-JbGFEH7w" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dm8VlRHTEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dm8VlhHTEeOjX-JbGFEH7w" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dm8VlxHTEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_dm7HcRHTEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layersconfig.uml#_dmmXUBHTEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dm7HchHTEeOjX-JbGFEH7w" points="[6, -5, -66, 0]$[71, -6, -1, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dnGGkBHTEeOjX-JbGFEH7w" id="(0.9586206896551724,0.5606060606060606)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dnGGkRHTEeOjX-JbGFEH7w" id="(0.008,0.47761194029850745)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7rcD8BHTEeOjX-JbGFEH7w" type="4001" source="_jLGXIBHSEeOjX-JbGFEH7w" target="_IFcAIBHMEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7rdSEBHTEeOjX-JbGFEH7w" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7rdSERHTEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7rdSEhHTEeOjX-JbGFEH7w" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7rdSExHTEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7rd5IBHTEeOjX-JbGFEH7w" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7rd5IRHTEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7rd5IhHTEeOjX-JbGFEH7w" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7rd5IxHTEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7rd5JBHTEeOjX-JbGFEH7w" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7rd5JRHTEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7rd5JhHTEeOjX-JbGFEH7w" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7rd5JxHTEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_7rcD8RHTEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layersconfig.uml#_7rHT0BHTEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7rcD8hHTEeOjX-JbGFEH7w" points="[5, -1, -36, 0]$[36, 3, -5, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7rlN4BHTEeOjX-JbGFEH7w" id="(0.96,0.23880597014925373)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7rl08BHTEeOjX-JbGFEH7w" id="(0.04132231404958678,0.8282208588957055)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_fqgTUBHUEeOjX-JbGFEH7w" type="4002" source="_hA-o8BHSEeOjX-JbGFEH7w" target="_Zqz7YBHMEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_fqhhcBHUEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fqhhcRHUEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_fqgTURHUEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layersconfig.uml#_fqIf4BHUEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fqgTUhHUEeOjX-JbGFEH7w" points="[-4, -5, -16, 417]$[-139, -209, -151, 213]$[-139, -431, -151, -9]$[5, -431, -7, -9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fqlL0BHUEeOjX-JbGFEH7w" id="(0.25517241379310346,0.07575757575757576)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fqlL0RHUEeOjX-JbGFEH7w" id="(0.04430379746835443,0.7702702702702703)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_XhQ8QBKNEeO9e9pZ1EIGJg" type="4001" source="_jLGXIBHSEeOjX-JbGFEH7w" target="_DDYbgBHMEeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XhQ8QxKNEeO9e9pZ1EIGJg" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XhQ8RBKNEeO9e9pZ1EIGJg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XhQ8RRKNEeO9e9pZ1EIGJg" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XhQ8RhKNEeO9e9pZ1EIGJg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XhaGMBKNEeO9e9pZ1EIGJg" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XhaGMRKNEeO9e9pZ1EIGJg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XhaGMhKNEeO9e9pZ1EIGJg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XhaGMxKNEeO9e9pZ1EIGJg" x="88" y="38"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XhaGNBKNEeO9e9pZ1EIGJg" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XhaGNRKNEeO9e9pZ1EIGJg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XhaGNhKNEeO9e9pZ1EIGJg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XhaGNxKNEeO9e9pZ1EIGJg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XhQ8QRKNEeO9e9pZ1EIGJg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layersconfig.uml#_Xg-BUBKNEeO9e9pZ1EIGJg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XhQ8QhKNEeO9e9pZ1EIGJg" points="[0, 4, 369, 30]$[0, 51, 369, 77]$[-375, 51, -6, 77]$[-375, -20, -6, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Xhj3MBKNEeO9e9pZ1EIGJg" id="(0.264,0.9402985074626866)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Xhj3MRKNEeO9e9pZ1EIGJg" id="(0.6835443037974683,0.9631901840490797)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_3oDWwBQzEeO9e9pZ1EIGJg" type="PapyrusUMLClassDiagram" name="property" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_6ckFwBQzEeO9e9pZ1EIGJg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6clT4BQzEeO9e9pZ1EIGJg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6clT4RQzEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6clT4hQzEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6cl68BQzEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6cl68RQzEeO9e9pZ1EIGJg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6cl68hQzEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6cl68xQzEeO9e9pZ1EIGJg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6cl69BQzEeO9e9pZ1EIGJg" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_BKfWUBQ0EeO9e9pZ1EIGJg" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layersconfig.uml#_BKIJ8BQ0EeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BKfWURQ0EeO9e9pZ1EIGJg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6cl69RQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6cl69hQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6cl69xQzEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cl6-BQzEeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6cmiABQzEeO9e9pZ1EIGJg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6cmiARQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6cmiAhQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6cmiAxQzEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cmiBBQzEeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6cmiBRQzEeO9e9pZ1EIGJg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6cmiBhQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6cmiBxQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6cmiCBQzEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cmiCRQzEeO9e9pZ1EIGJg"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_qodvUBHMEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6ckFwRQzEeO9e9pZ1EIGJg" x="144" y="144" width="259"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6cyvQBQzEeO9e9pZ1EIGJg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6czWUBQzEeO9e9pZ1EIGJg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6czWURQzEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6czWUhQzEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6czWUxQzEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6czWVBQzEeO9e9pZ1EIGJg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6czWVRQzEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6czWVhQzEeO9e9pZ1EIGJg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6czWVxQzEeO9e9pZ1EIGJg" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_71p_oBQzEeO9e9pZ1EIGJg" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layersconfig.uml#_8YScgBHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_71p_oRQzEeO9e9pZ1EIGJg" x="52" y="4"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6czWWBQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6czWWRQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6czWWhQzEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6czWWxQzEeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6czWXBQzEeO9e9pZ1EIGJg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6czWXRQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6cz9YBQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6cz9YRQzEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cz9YhQzEeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6cz9YxQzEeO9e9pZ1EIGJg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6cz9ZBQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6cz9ZRQzEeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6cz9ZhQzEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cz9ZxQzEeO9e9pZ1EIGJg"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_e6kaQBHLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cyvQRQzEeO9e9pZ1EIGJg" x="210" y="10" height="75"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_RW7vwBQ0EeO9e9pZ1EIGJg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RW8W0BQ0EeO9e9pZ1EIGJg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RW8W0RQ0EeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RW8W0hQ0EeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RW8W0xQ0EeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RW8W1BQ0EeO9e9pZ1EIGJg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RW8W1RQ0EeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RW8W1hQ0EeO9e9pZ1EIGJg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RW8W1xQ0EeO9e9pZ1EIGJg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RW8W2BQ0EeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RW8W2RQ0EeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RW8W2hQ0EeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RW8W2xQ0EeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RW894BQ0EeO9e9pZ1EIGJg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RW894RQ0EeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RW894hQ0EeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RW894xQ0EeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RW895BQ0EeO9e9pZ1EIGJg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RW895RQ0EeO9e9pZ1EIGJg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RW895hQ0EeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RW895xQ0EeO9e9pZ1EIGJg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RW896BQ0EeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RW896RQ0EeO9e9pZ1EIGJg"/>
+ </children>
+ <element xmi:type="uml:Class" href="layersconfig.uml#_RWlKcBQ0EeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RW7vwRQ0EeO9e9pZ1EIGJg" x="576" y="144" width="119"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3oDWwRQzEeO9e9pZ1EIGJg"/>
+ <element xmi:type="uml:Model" href="layersconfig.uml#_RggB0BHLEeOjX-JbGFEH7w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_6dLJwBQzEeO9e9pZ1EIGJg" type="4002" source="_6ckFwBQzEeO9e9pZ1EIGJg" target="_6cyvQBQzEeO9e9pZ1EIGJg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6dLw0BQzEeO9e9pZ1EIGJg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6dLw0RQzEeO9e9pZ1EIGJg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_6dLJwRQzEeO9e9pZ1EIGJg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layersconfig.uml#_4R1vEBHMEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6dLJwhQzEeO9e9pZ1EIGJg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_UHGKQBQ0EeO9e9pZ1EIGJg" type="4002" source="_RW7vwBQ0EeO9e9pZ1EIGJg" target="_6cyvQBQzEeO9e9pZ1EIGJg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UHHYYBQ0EeO9e9pZ1EIGJg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UHHYYRQ0EeO9e9pZ1EIGJg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UHGKQRQ0EeO9e9pZ1EIGJg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layersconfig.uml#_UGshoBQ0EeO9e9pZ1EIGJg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UHGKQhQ0EeO9e9pZ1EIGJg" points="[-21, -4, 312, 75]$[-298, -41, 35, 38]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UHLCwBQ0EeO9e9pZ1EIGJg" id="(0.2773109243697479,0.04)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.uml b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.uml
new file mode 100644
index 00000000000..de09831b24e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.uml
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Model xmi:id="_RggB0BHLEeOjX-JbGFEH7w" name="layersconfig">
+ <ownedComment xmi:id="_a1IuIECrEeOxsL3-gu79hA">
+ <body>Rename to &#xD;
+PropertyOpeatorConfig ?</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_dupZsBHLEeOjX-JbGFEH7w" name="Folder">
+ <generalization xmi:id="_jl454BHLEeOjX-JbGFEH7w" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+ <ownedAttribute xmi:id="_lZ2K0BHLEeOjX-JbGFEH7w" name="folderElements" type="_e6kaQBHLEeOjX-JbGFEH7w" aggregation="composite" association="_lZ9fkBHLEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lZ2K0RHLEeOjX-JbGFEH7w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lZ2K0hHLEeOjX-JbGFEH7w" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_e6kaQBHLEeOjX-JbGFEH7w" name="FolderElement" isAbstract="true">
+ <ownedAttribute xmi:id="_8YScgBHLEeOjX-JbGFEH7w" name="name" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9vrGMBHLEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9v2sYBHLEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_9wSKMBHLEeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_lZ9fkBHLEeOjX-JbGFEH7w" name="folder_folderElement_1" memberEnd="_lZ9fkRHLEeOjX-JbGFEH7w _lZ2K0BHLEeOjX-JbGFEH7w">
+ <ownedEnd xmi:id="_lZ9fkRHLEeOjX-JbGFEH7w" name="folder" type="_dupZsBHLEeOjX-JbGFEH7w" association="_lZ9fkBHLEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lZ9fkhHLEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lZ9fkxHLEeOjX-JbGFEH7w" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_vyPiABHLEeOjX-JbGFEH7w" name="String"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DDJyABHMEeOjX-JbGFEH7w" name="LayerOperatorConfig">
+ <generalization xmi:id="_cNPb4BHMEeOjX-JbGFEH7w" general="_J6-I8BHNEeOjX-JbGFEH7w"/>
+ <ownedOperation xmi:id="_RRZEMBKOEeO9e9pZ1EIGJg" name="createLayersOperatorDescriptor" raisedException="_nDCrQBKREeO9e9pZ1EIGJg">
+ <ownedParameter xmi:id="_7oMRsBKOEeO9e9pZ1EIGJg" name="return" type="_Z9gfwBKOEeO9e9pZ1EIGJg" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IFGo8BHMEeOjX-JbGFEH7w" name="OperatorConfig">
+ <generalization xmi:id="_dXPw4BHMEeOjX-JbGFEH7w" general="_J6-I8BHNEeOjX-JbGFEH7w"/>
+ <ownedOperation xmi:id="_aNsUABKSEeO9e9pZ1EIGJg" name="createOperatorDescriptor" raisedException="_nDCrQBKREeO9e9pZ1EIGJg">
+ <ownedParameter xmi:id="_aNsUARKSEeO9e9pZ1EIGJg" name="return" type="_wTo3cBKSEeO9e9pZ1EIGJg" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_qodvUBHMEeOjX-JbGFEH7w" name="PropertyId">
+ <generalization xmi:id="_4R1vEBHMEeOjX-JbGFEH7w" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+ <ownedAttribute xmi:id="_BKIJ8BQ0EeO9e9pZ1EIGJg" name="type" visibility="public" type="_RWlKcBQ0EeO9e9pZ1EIGJg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lQ7ZABQ0EeO9e9pZ1EIGJg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lRL3sBQ0EeO9e9pZ1EIGJg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_lR_wABQ0EeO9e9pZ1EIGJg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_wAAbwBHMEeOjX-JbGFEH7w" name="operatorConfig_propertyId_1" memberEnd="_wAAbwRHMEeOjX-JbGFEH7w _v_2DsBHMEeOjX-JbGFEH7w">
+ <ownedEnd xmi:id="_wAAbwRHMEeOjX-JbGFEH7w" name="operatorConfig" type="_jKujsBHSEeOjX-JbGFEH7w" association="_wAAbwBHMEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wAAbwhHMEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wAAbwxHMEeOjX-JbGFEH7w" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_J6-I8BHNEeOjX-JbGFEH7w" name="InstanciableElement" isAbstract="true">
+ <generalization xmi:id="_zAn3oBHNEeOjX-JbGFEH7w" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+ <ownedAttribute xmi:id="_QZd2YBHNEeOjX-JbGFEH7w" name="classname" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SN1XABHNEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SOBkQBHNEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_SOooQBHNEeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_S9IF8BHNEeOjX-JbGFEH7w" name="bundleID" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VABx0BHNEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VAOmIBHNEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_VA3fUBHNEeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_cMta8BHNEeOjX-JbGFEH7w" name="displayName" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fovc8BHNEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fo9fYBHNEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_fpnmsBHNEeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_gLlrUBHNEeOjX-JbGFEH7w" name="iconPath" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iHO4oBHNEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iHbF4BHNEeOjX-JbGFEH7w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_iIAUsBHNEeOjX-JbGFEH7w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_CcFM8BQnEeO9e9pZ1EIGJg" name="classnameKind" visibility="public" type="_wpf8IBQmEeO9e9pZ1EIGJg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GkE9EBQnEeO9e9pZ1EIGJg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GkU0sBQnEeO9e9pZ1EIGJg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_RYhXEBQnEeO9e9pZ1EIGJg" name="UNDEFINED" value="UNDEFINED"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hAs8IBHSEeOjX-JbGFEH7w" name="LayerOperatorMultipleBinding">
+ <generalization xmi:id="_fqIf4BHUEeOjX-JbGFEH7w" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+ <ownedAttribute xmi:id="_xf1BABHSEeOjX-JbGFEH7w" name="layerOperatorConfig" type="_DDJyABHMEeOjX-JbGFEH7w" association="_xf7usBHSEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xf1BARHSEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xf1BAhHSEeOjX-JbGFEH7w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_dmfCkBHTEeOjX-JbGFEH7w" name="bindings" type="_jKujsBHSEeOjX-JbGFEH7w" aggregation="composite" association="_dmmXUBHTEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dmfCkRHTEeOjX-JbGFEH7w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dmfCkhHTEeOjX-JbGFEH7w" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jKujsBHSEeOjX-JbGFEH7w" name="OperatorBinding">
+ <ownedAttribute xmi:id="_dmmXURHTEeOjX-JbGFEH7w" name="owner" type="_hAs8IBHSEeOjX-JbGFEH7w" association="_dmmXUBHTEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dmmXUhHTEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dmmXUxHTEeOjX-JbGFEH7w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_7q__EBHTEeOjX-JbGFEH7w" name="operator" type="_IFGo8BHMEeOjX-JbGFEH7w" association="_7rHT0BHTEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7q__ERHTEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7q__EhHTEeOjX-JbGFEH7w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_XgqfUBKNEeO9e9pZ1EIGJg" name="layerOperatorConfig" type="_DDJyABHMEeOjX-JbGFEH7w" isReadOnly="true" isDerived="true" association="_Xg-BUBKNEeO9e9pZ1EIGJg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XgqfURKNEeO9e9pZ1EIGJg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XgqfUhKNEeO9e9pZ1EIGJg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_v_2DsBHMEeOjX-JbGFEH7w" name="propertyId" type="_qodvUBHMEeOjX-JbGFEH7w" association="_wAAbwBHMEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v_2DsRHMEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v_2DshHMEeOjX-JbGFEH7w" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_xf7usBHSEeOjX-JbGFEH7w" name="class1_layerOperatorConfig_1" memberEnd="_xf7usRHSEeOjX-JbGFEH7w _xf1BABHSEeOjX-JbGFEH7w">
+ <ownedEnd xmi:id="_xf7usRHSEeOjX-JbGFEH7w" name="class1" type="_hAs8IBHSEeOjX-JbGFEH7w" association="_xf7usBHSEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xf7ushHSEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xf7usxHSEeOjX-JbGFEH7w" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_dmmXUBHTEeOjX-JbGFEH7w" name="layerOperatorBindings" memberEnd="_dmmXURHTEeOjX-JbGFEH7w _dmfCkBHTEeOjX-JbGFEH7w"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_7rHT0BHTEeOjX-JbGFEH7w" name="simpleBinding_operatorConfig_1" memberEnd="_7rHT0RHTEeOjX-JbGFEH7w _7q__EBHTEeOjX-JbGFEH7w">
+ <ownedEnd xmi:id="_7rHT0RHTEeOjX-JbGFEH7w" name="simpleBinding" type="_jKujsBHSEeOjX-JbGFEH7w" association="_7rHT0BHTEeOjX-JbGFEH7w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7rHT0hHTEeOjX-JbGFEH7w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7rHT0xHTEeOjX-JbGFEH7w" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Xg-BUBKNEeO9e9pZ1EIGJg" name="simpleBinding_layerOperatorConfig_1" memberEnd="_Xg-BURKNEeO9e9pZ1EIGJg _XgqfUBKNEeO9e9pZ1EIGJg">
+ <ownedEnd xmi:id="_Xg-BURKNEeO9e9pZ1EIGJg" name="simpleBinding" type="_jKujsBHSEeOjX-JbGFEH7w" association="_Xg-BUBKNEeO9e9pZ1EIGJg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Xg-BUhKNEeO9e9pZ1EIGJg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Xg-BUxKNEeO9e9pZ1EIGJg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Z9gfwBKOEeO9e9pZ1EIGJg" name="LayerOperatorDescriptor"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_nDCrQBKREeO9e9pZ1EIGJg" name="InstanciationException"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_wTo3cBKSEeO9e9pZ1EIGJg" name="PropertyOperator"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_wpf8IBQmEeO9e9pZ1EIGJg" name="ClassnameKind">
+ <ownedLiteral xmi:id="_zj87EBQmEeO9e9pZ1EIGJg" name="UNDEFINED"/>
+ <ownedLiteral xmi:id="_0_1DMBQmEeO9e9pZ1EIGJg" name="EMF_CLASSNAME"/>
+ <ownedLiteral xmi:id="_3Y_6ABQmEeO9e9pZ1EIGJg" name="POJO_CLASSNAME"/>
+ <ownedLiteral xmi:id="_5OQLcBQmEeO9e9pZ1EIGJg" name="NOT_FOUND"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RWlKcBQ0EeO9e9pZ1EIGJg" name="TypeConfig">
+ <generalization xmi:id="_UGshoBQ0EeO9e9pZ1EIGJg" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+ </packagedElement>
+ <profileApplication xmi:id="_zHFW4BHLEeOjX-JbGFEH7w">
+ <eAnnotations xmi:id="_zM0LcBHLEeOjX-JbGFEH7w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EDataType xmi:id="_4V6zQBHLEeOjX-JbGFEH7w" instanceClassName="java.lang.String" base_PrimitiveType="_vyPiABHLEeOjX-JbGFEH7w"/>
+ <Ecore:EPackage xmi:id="_I4_5IBHOEeOjX-JbGFEH7w" base_Package="_RggB0BHLEeOjX-JbGFEH7w" nsPrefix="layersconfig" nsURI="org.eclipse.papyrus.layersconfig.0.10" basePackage="org.eclipse.papyrus.layers.configmodel"/>
+ <Ecore:EReference xmi:id="_n0AyABKNEeO9e9pZ1EIGJg" isTransient="true" base_Property="_XgqfUBKNEeO9e9pZ1EIGJg"/>
+ <Ecore:EDataType xmi:id="_qxSmABKOEeO9e9pZ1EIGJg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor" base_PrimitiveType="_Z9gfwBKOEeO9e9pZ1EIGJg"/>
+ <Ecore:EDataType xmi:id="_qjZMkBKREeO9e9pZ1EIGJg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.InstanciationException" base_PrimitiveType="_nDCrQBKREeO9e9pZ1EIGJg"/>
+ <Ecore:EDataType xmi:id="_zmmdABKSEeO9e9pZ1EIGJg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator" base_PrimitiveType="_wTo3cBKSEeO9e9pZ1EIGJg"/>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/ecore.uml b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/ecore.uml
new file mode 100644
index 00000000000..6d48cca12f7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/ecore.uml
@@ -0,0 +1,1126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Model xmi:id="_A45IQLcnEeKeLJDBCBPhPw" name="ecore" URI="http://www.eclipse.org/emf/2002/Ecore">
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45IQbcnEeKeLJDBCBPhPw" name="EAttribute">
+ <generalization xmi:id="_A45IQrcnEeKeLJDBCBPhPw" general="_A45IRrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45IQ7cnEeKeLJDBCBPhPw" name="iD" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IRLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IRbcnEeKeLJDBCBPhPw" name="eAttributeType" type="_A45J37cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J7bcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45IRrcnEeKeLJDBCBPhPw" name="EStructuralFeature" isAbstract="true">
+ <generalization xmi:id="_A45IR7cnEeKeLJDBCBPhPw" general="_A45IY7cnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45ISLcnEeKeLJDBCBPhPw" name="eContainingClass" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45J2rcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45ISbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45ISrcnEeKeLJDBCBPhPw" name="changeable" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IS7cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45ITLcnEeKeLJDBCBPhPw" value="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45ITbcnEeKeLJDBCBPhPw" name="volatile" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45ITrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IT7cnEeKeLJDBCBPhPw" name="transient" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IULcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IUbcnEeKeLJDBCBPhPw" name="defaultValueLiteral" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IUrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IU7cnEeKeLJDBCBPhPw" name="defaultValue" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IVLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IVbcnEeKeLJDBCBPhPw" name="unsettable" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IVrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IV7cnEeKeLJDBCBPhPw" name="derived" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IWLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_A45IWbcnEeKeLJDBCBPhPw" name="getFeatureID" visibility="public">
+ <ownedParameter xmi:id="_A45IWrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IW7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45IXLcnEeKeLJDBCBPhPw" name="getContainerClass" visibility="public">
+ <ownedParameter xmi:id="_A45IXbcnEeKeLJDBCBPhPw" type="_A45IYLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IXrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_A45IX7cnEeKeLJDBCBPhPw" name="Wildcard"/>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45IYLcnEeKeLJDBCBPhPw" name="EJavaClass_Wildcard">
+ <templateBinding xmi:id="_A45IYbcnEeKeLJDBCBPhPw">
+ <parameterSubstitution xmi:id="_A45IYrcnEeKeLJDBCBPhPw" actual="_A45IX7cnEeKeLJDBCBPhPw">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0-_ownedParameter.0"/>
+ </parameterSubstitution>
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0"/>
+ </templateBinding>
+ </nestedClassifier>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45IY7cnEeKeLJDBCBPhPw" name="ETypedElement" isAbstract="true">
+ <generalization xmi:id="_A45IZLcnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45IZbcnEeKeLJDBCBPhPw" name="ordered" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IZrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45IZ7cnEeKeLJDBCBPhPw" value="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IaLcnEeKeLJDBCBPhPw" name="unique" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IabcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45IarcnEeKeLJDBCBPhPw" value="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45Ia7cnEeKeLJDBCBPhPw" name="lowerBound" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IbLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IbbcnEeKeLJDBCBPhPw" name="upperBound" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IbrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ib7cnEeKeLJDBCBPhPw" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IcLcnEeKeLJDBCBPhPw" name="many" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IcbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IcrcnEeKeLJDBCBPhPw" name="required" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ic7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IdLcnEeKeLJDBCBPhPw" name="eType" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45J6bcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IdbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IdrcnEeKeLJDBCBPhPw" name="eGenericType" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J67cnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Id7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45IeLcnEeKeLJDBCBPhPw" name="ENamedElement" isAbstract="true">
+ <generalization xmi:id="_A45IebcnEeKeLJDBCBPhPw" general="_A5C5ZrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45IercnEeKeLJDBCBPhPw" name="name" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ie7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45IfLcnEeKeLJDBCBPhPw" name="EClassifier" isAbstract="true">
+ <generalization xmi:id="_A45IfbcnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45IfrcnEeKeLJDBCBPhPw" name="instanceClassName" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45If7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IgLcnEeKeLJDBCBPhPw" name="instanceClass" visibility="public" type="_A45IlLcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IgbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IgrcnEeKeLJDBCBPhPw" name="defaultValue" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ig7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IhLcnEeKeLJDBCBPhPw" name="instanceTypeName" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IhbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IhrcnEeKeLJDBCBPhPw" name="ePackage" type="_A45Il7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45J5bcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ih7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IiLcnEeKeLJDBCBPhPw" name="eTypeParameters" type="_A45JgbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J57cnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IibcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45IircnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_A45Ii7cnEeKeLJDBCBPhPw" name="isInstance" visibility="public">
+ <ownedParameter xmi:id="_A45IjLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IjbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45IjrcnEeKeLJDBCBPhPw" name="object" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ij7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45IkLcnEeKeLJDBCBPhPw" name="getClassifierID" visibility="public">
+ <ownedParameter xmi:id="_A45IkbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IkrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_A45Ik7cnEeKeLJDBCBPhPw" name="Wildcard"/>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45IlLcnEeKeLJDBCBPhPw" name="EJavaClass_Wildcard">
+ <templateBinding xmi:id="_A45IlbcnEeKeLJDBCBPhPw">
+ <parameterSubstitution xmi:id="_A45IlrcnEeKeLJDBCBPhPw" actual="_A45Ik7cnEeKeLJDBCBPhPw">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0-_ownedParameter.0"/>
+ </parameterSubstitution>
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0"/>
+ </templateBinding>
+ </nestedClassifier>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45Il7cnEeKeLJDBCBPhPw" name="EPackage">
+ <generalization xmi:id="_A45ImLcnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45ImbcnEeKeLJDBCBPhPw" name="nsURI" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45ImrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45Im7cnEeKeLJDBCBPhPw" name="nsPrefix" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45InLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45InbcnEeKeLJDBCBPhPw" name="eFactoryInstance" type="_A45Iq7cnEeKeLJDBCBPhPw" isOrdered="true" association="_A45J5LcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45InrcnEeKeLJDBCBPhPw" name="eClassifiers" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J5bcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45In7cnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45IoLcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IobcnEeKeLJDBCBPhPw" name="eSubpackages" type="_A45Il7cnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J5rcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IorcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45Io7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45IpLcnEeKeLJDBCBPhPw" name="eSuperPackage" type="_A45Il7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45J5rcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IpbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_A45IprcnEeKeLJDBCBPhPw" name="getEClassifier" visibility="public">
+ <ownedParameter xmi:id="_A45Ip7cnEeKeLJDBCBPhPw" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IqLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45IqbcnEeKeLJDBCBPhPw" name="name" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IqrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45Iq7cnEeKeLJDBCBPhPw" name="EFactory">
+ <generalization xmi:id="_A45IrLcnEeKeLJDBCBPhPw" general="_A5C5ZrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45IrbcnEeKeLJDBCBPhPw" name="ePackage" type="_A45Il7cnEeKeLJDBCBPhPw" isOrdered="true" association="_A45J5LcnEeKeLJDBCBPhPw"/>
+ <ownedOperation xmi:id="_A45IrrcnEeKeLJDBCBPhPw" name="create" visibility="public">
+ <ownedParameter xmi:id="_A45Ir7cnEeKeLJDBCBPhPw" type="_A45IwbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IsLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45IsbcnEeKeLJDBCBPhPw" name="eClass" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IsrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45Is7cnEeKeLJDBCBPhPw" name="createFromString" visibility="public">
+ <ownedParameter xmi:id="_A45ItLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45ItbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45ItrcnEeKeLJDBCBPhPw" name="eDataType" type="_A45J37cnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45It7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45IuLcnEeKeLJDBCBPhPw" name="literalValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IubcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45IurcnEeKeLJDBCBPhPw" name="convertToString" visibility="public">
+ <ownedParameter xmi:id="_A45Iu7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IvLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45IvbcnEeKeLJDBCBPhPw" name="eDataType" type="_A45J37cnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IvrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45Iv7cnEeKeLJDBCBPhPw" name="instanceValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IwLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45IwbcnEeKeLJDBCBPhPw" name="EObject">
+ <ownedOperation xmi:id="_A45IwrcnEeKeLJDBCBPhPw" name="eClass" visibility="public">
+ <ownedParameter xmi:id="_A45Iw7cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IxLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45IxbcnEeKeLJDBCBPhPw" name="eIsProxy" visibility="public">
+ <ownedParameter xmi:id="_A45IxrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ix7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45IyLcnEeKeLJDBCBPhPw" name="eResource" visibility="public">
+ <ownedParameter xmi:id="_A45IybcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EResource"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IyrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45Iy7cnEeKeLJDBCBPhPw" name="eContainer" visibility="public">
+ <ownedParameter xmi:id="_A45IzLcnEeKeLJDBCBPhPw" type="_A45IwbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IzbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45IzrcnEeKeLJDBCBPhPw" name="eContainingFeature" visibility="public">
+ <ownedParameter xmi:id="_A45Iz7cnEeKeLJDBCBPhPw" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I0LcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I0bcnEeKeLJDBCBPhPw" name="eContainmentFeature" visibility="public">
+ <ownedParameter xmi:id="_A45I0rcnEeKeLJDBCBPhPw" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I07cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I1LcnEeKeLJDBCBPhPw" name="eContents" visibility="public">
+ <ownedParameter xmi:id="_A45I1bcnEeKeLJDBCBPhPw" type="_A45JAbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I1rcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I17cnEeKeLJDBCBPhPw" name="eAllContents" visibility="public">
+ <ownedParameter xmi:id="_A45I2LcnEeKeLJDBCBPhPw" type="_A45JBLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I2bcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I2rcnEeKeLJDBCBPhPw" name="eCrossReferences" visibility="public">
+ <ownedParameter xmi:id="_A45I27cnEeKeLJDBCBPhPw" type="_A45JAbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I3LcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I3bcnEeKeLJDBCBPhPw" name="eGet" visibility="public">
+ <ownedParameter xmi:id="_A45I3rcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I37cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45I4LcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I4bcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I4rcnEeKeLJDBCBPhPw" name="eGet" visibility="public">
+ <ownedParameter xmi:id="_A45I47cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I5LcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45I5bcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I5rcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45I57cnEeKeLJDBCBPhPw" name="resolve" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I6LcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I6bcnEeKeLJDBCBPhPw" name="eSet" visibility="public">
+ <ownedParameter xmi:id="_A45I6rcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I67cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45I7LcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I7bcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45I7rcnEeKeLJDBCBPhPw" name="newValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I77cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I8LcnEeKeLJDBCBPhPw" name="eIsSet" visibility="public">
+ <ownedParameter xmi:id="_A45I8bcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I8rcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45I87cnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I9LcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I9bcnEeKeLJDBCBPhPw" name="eUnset" visibility="public">
+ <ownedParameter xmi:id="_A45I9rcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I97cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45I-LcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I-bcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45I-rcnEeKeLJDBCBPhPw" name="eInvoke" visibility="public">
+ <ownedParameter xmi:id="_A45I-7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I_LcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45I_bcnEeKeLJDBCBPhPw" name="operation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I_rcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45I_7cnEeKeLJDBCBPhPw" name="arguments" type="_A45JCLcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JALcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <raisedException xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInvocationTargetException"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45JAbcnEeKeLJDBCBPhPw" name="EEList_EObject">
+ <templateBinding xmi:id="_A45JArcnEeKeLJDBCBPhPw">
+ <parameterSubstitution xmi:id="_A45JA7cnEeKeLJDBCBPhPw" actual="_A45IwbcnEeKeLJDBCBPhPw">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEList-_ownedElement.0-_ownedParameter.0"/>
+ </parameterSubstitution>
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEList-_ownedElement.0"/>
+ </templateBinding>
+ </nestedClassifier>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45JBLcnEeKeLJDBCBPhPw" name="ETreeIterator_EObject">
+ <templateBinding xmi:id="_A45JBbcnEeKeLJDBCBPhPw">
+ <parameterSubstitution xmi:id="_A45JBrcnEeKeLJDBCBPhPw" actual="_A45IwbcnEeKeLJDBCBPhPw">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#ETreeIterator-_ownedElement.0-_ownedParameter.0"/>
+ </parameterSubstitution>
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#ETreeIterator-_ownedElement.0"/>
+ </templateBinding>
+ </nestedClassifier>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_A45JB7cnEeKeLJDBCBPhPw" name="Wildcard"/>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45JCLcnEeKeLJDBCBPhPw" name="EEList_Wildcard">
+ <templateBinding xmi:id="_A45JCbcnEeKeLJDBCBPhPw">
+ <parameterSubstitution xmi:id="_A45JCrcnEeKeLJDBCBPhPw" actual="_A45JB7cnEeKeLJDBCBPhPw">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEList-_ownedElement.0-_ownedParameter.0"/>
+ </parameterSubstitution>
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEList-_ownedElement.0"/>
+ </templateBinding>
+ </nestedClassifier>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45JC7cnEeKeLJDBCBPhPw" name="EClass">
+ <generalization xmi:id="_A45JDLcnEeKeLJDBCBPhPw" general="_A45IfLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45JDbcnEeKeLJDBCBPhPw" name="eOperations" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JgLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JDrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JD7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JELcnEeKeLJDBCBPhPw" name="abstract" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JEbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JErcnEeKeLJDBCBPhPw" name="interface" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JE7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JFLcnEeKeLJDBCBPhPw" name="eSuperTypes" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JsbcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JFbcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JFrcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JF7cnEeKeLJDBCBPhPw" name="eAllAttributes" type="_A45IQbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45Js7cnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JGLcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JGbcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JGrcnEeKeLJDBCBPhPw" name="eAllReferences" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JyrcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JG7cnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JHLcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JHbcnEeKeLJDBCBPhPw" name="eReferences" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JzLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JHrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JH7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JILcnEeKeLJDBCBPhPw" name="eAttributes" type="_A45IQbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JzrcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JIbcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JIrcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JI7cnEeKeLJDBCBPhPw" name="eAllContainments" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J0LcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JJLcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JJbcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JJrcnEeKeLJDBCBPhPw" name="eAllOperations" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J0rcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JJ7cnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JKLcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JKbcnEeKeLJDBCBPhPw" name="eAllStructuralFeatures" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J1LcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JKrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JK7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JLLcnEeKeLJDBCBPhPw" name="eAllSuperTypes" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J1rcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JLbcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JLrcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JL7cnEeKeLJDBCBPhPw" name="eIDAttribute" type="_A45IQbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J2LcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JMLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JMbcnEeKeLJDBCBPhPw" name="eStructuralFeatures" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J2rcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JMrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JM7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JNLcnEeKeLJDBCBPhPw" name="eGenericSuperTypes" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J27cnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JNbcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JNrcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JN7cnEeKeLJDBCBPhPw" name="eAllGenericSuperTypes" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J3bcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JOLcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JObcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_A45JOrcnEeKeLJDBCBPhPw" name="isSuperTypeOf" visibility="public">
+ <ownedParameter xmi:id="_A45JO7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JPLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JPbcnEeKeLJDBCBPhPw" name="someClass" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JPrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45JP7cnEeKeLJDBCBPhPw" name="getFeatureCount" visibility="public">
+ <ownedParameter xmi:id="_A45JQLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JQbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45JQrcnEeKeLJDBCBPhPw" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_A45JQ7cnEeKeLJDBCBPhPw" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JRLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JRbcnEeKeLJDBCBPhPw" name="featureID" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JRrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45JR7cnEeKeLJDBCBPhPw" name="getFeatureID" visibility="public">
+ <ownedParameter xmi:id="_A45JSLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JSbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JSrcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JS7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45JTLcnEeKeLJDBCBPhPw" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_A45JTbcnEeKeLJDBCBPhPw" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JTrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JT7cnEeKeLJDBCBPhPw" name="featureName" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JULcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45JUbcnEeKeLJDBCBPhPw" name="getOperationCount" visibility="public">
+ <ownedParameter xmi:id="_A45JUrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JU7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45JVLcnEeKeLJDBCBPhPw" name="getEOperation" visibility="public">
+ <ownedParameter xmi:id="_A45JVbcnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JVrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JV7cnEeKeLJDBCBPhPw" name="operationID" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JWLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45JWbcnEeKeLJDBCBPhPw" name="getOperationID" visibility="public">
+ <ownedParameter xmi:id="_A45JWrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JW7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JXLcnEeKeLJDBCBPhPw" name="operation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JXbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45JXrcnEeKeLJDBCBPhPw" name="getOverride" visibility="public">
+ <ownedParameter xmi:id="_A45JX7cnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JYLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JYbcnEeKeLJDBCBPhPw" name="operation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JYrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45JY7cnEeKeLJDBCBPhPw" name="getFeatureType" visibility="public">
+ <ownedParameter xmi:id="_A45JZLcnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JZbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JZrcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JZ7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45JaLcnEeKeLJDBCBPhPw" name="EOperation">
+ <generalization xmi:id="_A45JabcnEeKeLJDBCBPhPw" general="_A45IY7cnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45JarcnEeKeLJDBCBPhPw" name="eContainingClass" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45JgLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ja7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JbLcnEeKeLJDBCBPhPw" name="eTypeParameters" type="_A45JgbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JprcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JbbcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JbrcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45Jb7cnEeKeLJDBCBPhPw" name="eParameters" type="_A45JqLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JrLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JcLcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JcbcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JcrcnEeKeLJDBCBPhPw" name="eExceptions" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JrbcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jc7cnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JdLcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JdbcnEeKeLJDBCBPhPw" name="eGenericExceptions" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45Jr7cnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JdrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45Jd7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_A45JeLcnEeKeLJDBCBPhPw" name="getOperationID" visibility="public">
+ <ownedParameter xmi:id="_A45JebcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JercnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45Je7cnEeKeLJDBCBPhPw" name="isOverrideOf" visibility="public">
+ <ownedParameter xmi:id="_A45JfLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JfbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JfrcnEeKeLJDBCBPhPw" name="someOperation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jf7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JgLcnEeKeLJDBCBPhPw" memberEnd="_A45JDbcnEeKeLJDBCBPhPw _A45JarcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45JgbcnEeKeLJDBCBPhPw" name="ETypeParameter">
+ <generalization xmi:id="_A45JgrcnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45Jg7cnEeKeLJDBCBPhPw" name="eBounds" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JpLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JhLcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JhbcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45JhrcnEeKeLJDBCBPhPw" name="EGenericType">
+ <ownedAttribute xmi:id="_A45Jh7cnEeKeLJDBCBPhPw" name="eUpperBound" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JmLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JiLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JibcnEeKeLJDBCBPhPw" name="eTypeArguments" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JmrcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JircnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45Ji7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JjLcnEeKeLJDBCBPhPw" name="eRawType" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JnLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45JjbcnEeKeLJDBCBPhPw" name="eLowerBound" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JnrcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JjrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45Jj7cnEeKeLJDBCBPhPw" name="eTypeParameter" type="_A45JgbcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JoLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JkLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JkbcnEeKeLJDBCBPhPw" name="eClassifier" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JorcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JkrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_A45Jk7cnEeKeLJDBCBPhPw" name="isInstance" visibility="public">
+ <ownedParameter xmi:id="_A45JlLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JlbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45JlrcnEeKeLJDBCBPhPw" name="object" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jl7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JmLcnEeKeLJDBCBPhPw" memberEnd="_A45Jh7cnEeKeLJDBCBPhPw _A45JmbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JmbcnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JmLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JmrcnEeKeLJDBCBPhPw" memberEnd="_A45JibcnEeKeLJDBCBPhPw _A45Jm7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45Jm7cnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JmrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JnLcnEeKeLJDBCBPhPw" memberEnd="_A45JjLcnEeKeLJDBCBPhPw _A45JnbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JnbcnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JnLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JnrcnEeKeLJDBCBPhPw" memberEnd="_A45JjbcnEeKeLJDBCBPhPw _A45Jn7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45Jn7cnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JnrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JoLcnEeKeLJDBCBPhPw" memberEnd="_A45Jj7cnEeKeLJDBCBPhPw _A45JobcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JobcnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JoLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JorcnEeKeLJDBCBPhPw" memberEnd="_A45JkbcnEeKeLJDBCBPhPw _A45Jo7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45Jo7cnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JorcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JpLcnEeKeLJDBCBPhPw" memberEnd="_A45Jg7cnEeKeLJDBCBPhPw _A45JpbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JpbcnEeKeLJDBCBPhPw" type="_A45JgbcnEeKeLJDBCBPhPw" association="_A45JpLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JprcnEeKeLJDBCBPhPw" memberEnd="_A45JbLcnEeKeLJDBCBPhPw _A45Jp7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45Jp7cnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" association="_A45JprcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45JqLcnEeKeLJDBCBPhPw" name="EParameter">
+ <generalization xmi:id="_A45JqbcnEeKeLJDBCBPhPw" general="_A45IY7cnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45JqrcnEeKeLJDBCBPhPw" name="eOperation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45JrLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jq7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JrLcnEeKeLJDBCBPhPw" memberEnd="_A45Jb7cnEeKeLJDBCBPhPw _A45JqrcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JrbcnEeKeLJDBCBPhPw" memberEnd="_A45JcrcnEeKeLJDBCBPhPw _A45JrrcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JrrcnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" association="_A45JrbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45Jr7cnEeKeLJDBCBPhPw" memberEnd="_A45JdbcnEeKeLJDBCBPhPw _A45JsLcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JsLcnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" association="_A45Jr7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JsbcnEeKeLJDBCBPhPw" memberEnd="_A45JFLcnEeKeLJDBCBPhPw _A45JsrcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JsrcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45JsbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45Js7cnEeKeLJDBCBPhPw" memberEnd="_A45JF7cnEeKeLJDBCBPhPw _A45JtLcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JtLcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45Js7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45JtbcnEeKeLJDBCBPhPw" name="EReference">
+ <generalization xmi:id="_A45JtrcnEeKeLJDBCBPhPw" general="_A45IRrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45Jt7cnEeKeLJDBCBPhPw" name="containment" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JuLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JubcnEeKeLJDBCBPhPw" name="container" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JurcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45Ju7cnEeKeLJDBCBPhPw" name="resolveProxies" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JvLcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45JvbcnEeKeLJDBCBPhPw" value="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JvrcnEeKeLJDBCBPhPw" name="eOpposite" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JxLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jv7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45JwLcnEeKeLJDBCBPhPw" name="eReferenceType" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JxrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45JwbcnEeKeLJDBCBPhPw" name="eKeys" type="_A45IQbcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JyLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JwrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45Jw7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JxLcnEeKeLJDBCBPhPw" memberEnd="_A45JvrcnEeKeLJDBCBPhPw _A45JxbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JxbcnEeKeLJDBCBPhPw" type="_A45JtbcnEeKeLJDBCBPhPw" association="_A45JxLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JxrcnEeKeLJDBCBPhPw" memberEnd="_A45JwLcnEeKeLJDBCBPhPw _A45Jx7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45Jx7cnEeKeLJDBCBPhPw" type="_A45JtbcnEeKeLJDBCBPhPw" association="_A45JxrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JyLcnEeKeLJDBCBPhPw" memberEnd="_A45JwbcnEeKeLJDBCBPhPw _A45JybcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JybcnEeKeLJDBCBPhPw" type="_A45JtbcnEeKeLJDBCBPhPw" association="_A45JyLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JyrcnEeKeLJDBCBPhPw" memberEnd="_A45JGrcnEeKeLJDBCBPhPw _A45Jy7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45Jy7cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45JyrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JzLcnEeKeLJDBCBPhPw" memberEnd="_A45JHbcnEeKeLJDBCBPhPw _A45JzbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45JzbcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45JzLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45JzrcnEeKeLJDBCBPhPw" memberEnd="_A45JILcnEeKeLJDBCBPhPw _A45Jz7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45Jz7cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45JzrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J0LcnEeKeLJDBCBPhPw" memberEnd="_A45JI7cnEeKeLJDBCBPhPw _A45J0bcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J0bcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J0LcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J0rcnEeKeLJDBCBPhPw" memberEnd="_A45JJrcnEeKeLJDBCBPhPw _A45J07cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J07cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J0rcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J1LcnEeKeLJDBCBPhPw" memberEnd="_A45JKbcnEeKeLJDBCBPhPw _A45J1bcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J1bcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J1LcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J1rcnEeKeLJDBCBPhPw" memberEnd="_A45JLLcnEeKeLJDBCBPhPw _A45J17cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J17cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J1rcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J2LcnEeKeLJDBCBPhPw" memberEnd="_A45JL7cnEeKeLJDBCBPhPw _A45J2bcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J2bcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J2LcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J2rcnEeKeLJDBCBPhPw" memberEnd="_A45JMbcnEeKeLJDBCBPhPw _A45ISLcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J27cnEeKeLJDBCBPhPw" memberEnd="_A45JNLcnEeKeLJDBCBPhPw _A45J3LcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J3LcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J27cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J3bcnEeKeLJDBCBPhPw" memberEnd="_A45JN7cnEeKeLJDBCBPhPw _A45J3rcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J3rcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J3bcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45J37cnEeKeLJDBCBPhPw" name="EDataType">
+ <generalization xmi:id="_A45J4LcnEeKeLJDBCBPhPw" general="_A45IfLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45J4bcnEeKeLJDBCBPhPw" name="serializable" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J4rcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45J47cnEeKeLJDBCBPhPw" value="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J5LcnEeKeLJDBCBPhPw" memberEnd="_A45IrbcnEeKeLJDBCBPhPw _A45InbcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J5bcnEeKeLJDBCBPhPw" memberEnd="_A45InrcnEeKeLJDBCBPhPw _A45IhrcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J5rcnEeKeLJDBCBPhPw" memberEnd="_A45IobcnEeKeLJDBCBPhPw _A45IpLcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J57cnEeKeLJDBCBPhPw" memberEnd="_A45IiLcnEeKeLJDBCBPhPw _A45J6LcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J6LcnEeKeLJDBCBPhPw" type="_A45IfLcnEeKeLJDBCBPhPw" association="_A45J57cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J6bcnEeKeLJDBCBPhPw" memberEnd="_A45IdLcnEeKeLJDBCBPhPw _A45J6rcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J6rcnEeKeLJDBCBPhPw" type="_A45IY7cnEeKeLJDBCBPhPw" association="_A45J6bcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J67cnEeKeLJDBCBPhPw" memberEnd="_A45IdrcnEeKeLJDBCBPhPw _A45J7LcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J7LcnEeKeLJDBCBPhPw" type="_A45IY7cnEeKeLJDBCBPhPw" association="_A45J67cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45J7bcnEeKeLJDBCBPhPw" memberEnd="_A45IRbcnEeKeLJDBCBPhPw _A45J7rcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45J7rcnEeKeLJDBCBPhPw" type="_A45IQbcnEeKeLJDBCBPhPw" association="_A45J7bcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45J77cnEeKeLJDBCBPhPw" name="EAnnotation">
+ <generalization xmi:id="_A45J8LcnEeKeLJDBCBPhPw" general="_A5C5ZrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45J8bcnEeKeLJDBCBPhPw" name="source" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J8rcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45J87cnEeKeLJDBCBPhPw" name="details" type="_A45J_rcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45KA7cnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J9LcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45J9bcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45J9rcnEeKeLJDBCBPhPw" name="eModelElement" type="_A5C5ZrcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45KBbcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J97cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45J-LcnEeKeLJDBCBPhPw" name="contents" type="_A45IwbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45KBrcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J-bcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45J-rcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45J-7cnEeKeLJDBCBPhPw" name="references" type="_A45IwbcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45KCLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J_LcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45J_bcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45J_rcnEeKeLJDBCBPhPw" name="EStringToStringMapEntry">
+ <ownedAttribute xmi:id="_A45J_7cnEeKeLJDBCBPhPw" name="key" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KALcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45KAbcnEeKeLJDBCBPhPw" name="value" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KArcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45KA7cnEeKeLJDBCBPhPw" memberEnd="_A45J87cnEeKeLJDBCBPhPw _A45KBLcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45KBLcnEeKeLJDBCBPhPw" type="_A45J77cnEeKeLJDBCBPhPw" association="_A45KA7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45KBbcnEeKeLJDBCBPhPw" memberEnd="_A5C5Z7cnEeKeLJDBCBPhPw _A45J9rcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45KBrcnEeKeLJDBCBPhPw" memberEnd="_A45J-LcnEeKeLJDBCBPhPw _A45KB7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45KB7cnEeKeLJDBCBPhPw" type="_A45J77cnEeKeLJDBCBPhPw" association="_A45KBrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45KCLcnEeKeLJDBCBPhPw" memberEnd="_A45J-7cnEeKeLJDBCBPhPw _A45KCbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_A45KCbcnEeKeLJDBCBPhPw" type="_A45J77cnEeKeLJDBCBPhPw" association="_A45KCLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45KCrcnEeKeLJDBCBPhPw" name="EEnum">
+ <generalization xmi:id="_A45KC7cnEeKeLJDBCBPhPw" general="_A45J37cnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45KDLcnEeKeLJDBCBPhPw" name="eLiterals" type="_A45KHrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45KKLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KDbcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45KDrcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_A45KD7cnEeKeLJDBCBPhPw" name="getEEnumLiteral" visibility="public">
+ <ownedParameter xmi:id="_A45KELcnEeKeLJDBCBPhPw" type="_A45KHrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KEbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45KErcnEeKeLJDBCBPhPw" name="name" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KE7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45KFLcnEeKeLJDBCBPhPw" name="getEEnumLiteral" visibility="public">
+ <ownedParameter xmi:id="_A45KFbcnEeKeLJDBCBPhPw" type="_A45KHrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KFrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45KF7cnEeKeLJDBCBPhPw" name="value" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KGLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A45KGbcnEeKeLJDBCBPhPw" name="getEEnumLiteralByLiteral" visibility="public">
+ <ownedParameter xmi:id="_A45KGrcnEeKeLJDBCBPhPw" type="_A45KHrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KG7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A45KHLcnEeKeLJDBCBPhPw" name="literal" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KHbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A45KHrcnEeKeLJDBCBPhPw" name="EEnumLiteral">
+ <generalization xmi:id="_A45KH7cnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_A45KILcnEeKeLJDBCBPhPw" name="value" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KIbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45KIrcnEeKeLJDBCBPhPw" name="instance" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEnumerator"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KI7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45KJLcnEeKeLJDBCBPhPw" name="literal" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KJbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_A45KJrcnEeKeLJDBCBPhPw" name="eEnum" type="_A45KCrcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45KKLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KJ7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A45KKLcnEeKeLJDBCBPhPw" memberEnd="_A45KDLcnEeKeLJDBCBPhPw _A45KJrcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KKbcnEeKeLJDBCBPhPw" name="EBigDecimal"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KKrcnEeKeLJDBCBPhPw" name="EBigInteger"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KK7cnEeKeLJDBCBPhPw" name="EBoolean"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KLLcnEeKeLJDBCBPhPw" name="EBooleanObject">
+ <generalization xmi:id="_A45KLbcnEeKeLJDBCBPhPw">
+ <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </generalization>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KLrcnEeKeLJDBCBPhPw" name="EByte"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KL7cnEeKeLJDBCBPhPw" name="EByteArray"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KMLcnEeKeLJDBCBPhPw" name="EByteObject">
+ <generalization xmi:id="_A45KMbcnEeKeLJDBCBPhPw">
+ <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte"/>
+ </generalization>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KMrcnEeKeLJDBCBPhPw" name="EChar"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KM7cnEeKeLJDBCBPhPw" name="ECharacterObject">
+ <generalization xmi:id="_A45KNLcnEeKeLJDBCBPhPw">
+ <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EChar"/>
+ </generalization>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KNbcnEeKeLJDBCBPhPw" name="EDate"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KNrcnEeKeLJDBCBPhPw" name="EDiagnosticChain"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KN7cnEeKeLJDBCBPhPw" name="EDouble"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KOLcnEeKeLJDBCBPhPw" name="EDoubleObject">
+ <generalization xmi:id="_A45KObcnEeKeLJDBCBPhPw">
+ <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
+ </generalization>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5QLcnEeKeLJDBCBPhPw" name="EEList">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_A5C5QbcnEeKeLJDBCBPhPw" parameter="_A5C5QrcnEeKeLJDBCBPhPw">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5QrcnEeKeLJDBCBPhPw" parameteredElement="_A5C5Q7cnEeKeLJDBCBPhPw">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5Q7cnEeKeLJDBCBPhPw" name="E" templateParameter="_A5C5QrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5RLcnEeKeLJDBCBPhPw" name="EEnumerator"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5RbcnEeKeLJDBCBPhPw" name="EFeatureMap"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5RrcnEeKeLJDBCBPhPw" name="EFeatureMapEntry"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5R7cnEeKeLJDBCBPhPw" name="EFloat"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5SLcnEeKeLJDBCBPhPw" name="EFloatObject">
+ <generalization xmi:id="_A5C5SbcnEeKeLJDBCBPhPw">
+ <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EFloat"/>
+ </generalization>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5SrcnEeKeLJDBCBPhPw" name="EInt"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5S7cnEeKeLJDBCBPhPw" name="EIntegerObject">
+ <generalization xmi:id="_A5C5TLcnEeKeLJDBCBPhPw">
+ <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </generalization>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5TbcnEeKeLJDBCBPhPw" name="EJavaClass">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_A5C5TrcnEeKeLJDBCBPhPw" parameter="_A5C5T7cnEeKeLJDBCBPhPw">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5T7cnEeKeLJDBCBPhPw" parameteredElement="_A5C5ULcnEeKeLJDBCBPhPw">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5ULcnEeKeLJDBCBPhPw" name="T" templateParameter="_A5C5T7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5UbcnEeKeLJDBCBPhPw" name="EJavaObject"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5UrcnEeKeLJDBCBPhPw" name="ELong"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5U7cnEeKeLJDBCBPhPw" name="ELongObject">
+ <generalization xmi:id="_A5C5VLcnEeKeLJDBCBPhPw">
+ <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#ELong"/>
+ </generalization>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5VbcnEeKeLJDBCBPhPw" name="EMap">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_A5C5VrcnEeKeLJDBCBPhPw" parameter="_A5C5V7cnEeKeLJDBCBPhPw _A5C5WbcnEeKeLJDBCBPhPw">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5V7cnEeKeLJDBCBPhPw" parameteredElement="_A5C5WLcnEeKeLJDBCBPhPw">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5WLcnEeKeLJDBCBPhPw" name="K" templateParameter="_A5C5V7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5WbcnEeKeLJDBCBPhPw" parameteredElement="_A5C5WrcnEeKeLJDBCBPhPw">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5WrcnEeKeLJDBCBPhPw" name="V" templateParameter="_A5C5WbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5W7cnEeKeLJDBCBPhPw" name="EResource"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5XLcnEeKeLJDBCBPhPw" name="EResourceSet"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5XbcnEeKeLJDBCBPhPw" name="EShort"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5XrcnEeKeLJDBCBPhPw" name="EShortObject">
+ <generalization xmi:id="_A5C5X7cnEeKeLJDBCBPhPw">
+ <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort"/>
+ </generalization>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5YLcnEeKeLJDBCBPhPw" name="EString"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5YbcnEeKeLJDBCBPhPw" name="ETreeIterator">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_A5C5YrcnEeKeLJDBCBPhPw" parameter="_A5C5Y7cnEeKeLJDBCBPhPw">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5Y7cnEeKeLJDBCBPhPw" parameteredElement="_A5C5ZLcnEeKeLJDBCBPhPw">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5ZLcnEeKeLJDBCBPhPw" name="E" templateParameter="_A5C5Y7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5ZbcnEeKeLJDBCBPhPw" name="EInvocationTargetException"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A5C5ZrcnEeKeLJDBCBPhPw" name="EModelElement" isAbstract="true">
+ <ownedAttribute xmi:id="_A5C5Z7cnEeKeLJDBCBPhPw" name="eAnnotations" type="_A45J77cnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45KBbcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A5C5aLcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A5C5abcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_A5C5arcnEeKeLJDBCBPhPw" name="getEAnnotation" visibility="public">
+ <ownedParameter xmi:id="_A5C5a7cnEeKeLJDBCBPhPw" type="_A45J77cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A5C5bLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_A5C5bbcnEeKeLJDBCBPhPw" name="source" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A5C5brcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <profileApplication xmi:id="_A5C5b7cnEeKeLJDBCBPhPw">
+ <eAnnotations xmi:id="_A5C5cLcnEeKeLJDBCBPhPw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_A5C5cbcnEeKeLJDBCBPhPw" base_Package="_A45IQLcnEeKeLJDBCBPhPw" nsPrefix="ecore"/>
+ <Ecore:EClass xmi:id="_A5C5crcnEeKeLJDBCBPhPw" base_Class="_A45IQbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5C5c7cnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45IRbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5C5dLcnEeKeLJDBCBPhPw" base_Class="_A45IRrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5C5dbcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45ISLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EOperation xmi:id="_A5C5drcnEeKeLJDBCBPhPw" base_Operation="_A45IWbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5C5d7cnEeKeLJDBCBPhPw" base_Operation="_A45IXLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EGenericType xmi:id="_A5C5eLcnEeKeLJDBCBPhPw" base_Class="_A45IX7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EGenericType xmi:id="_A5C5ebcnEeKeLJDBCBPhPw" base_DataType="_A45IYLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5C5ercnEeKeLJDBCBPhPw" base_Class="_A45IY7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5C5e7cnEeKeLJDBCBPhPw" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_A45IdLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5C5fLcnEeKeLJDBCBPhPw" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_A45IdrcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EClass xmi:id="_A5C5fbcnEeKeLJDBCBPhPw" base_Class="_A45IeLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5C5frcnEeKeLJDBCBPhPw" base_Class="_A45IfLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5C5f7cnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45IhrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5C5gLcnEeKeLJDBCBPhPw" base_Property="_A45IiLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5C5gbcnEeKeLJDBCBPhPw" base_Operation="_A45Ii7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5C5grcnEeKeLJDBCBPhPw" base_Parameter="_A45IjrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5C5g7cnEeKeLJDBCBPhPw" base_Operation="_A45IkLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EGenericType xmi:id="_A5C5hLcnEeKeLJDBCBPhPw" base_Class="_A45Ik7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EGenericType xmi:id="_A5C5hbcnEeKeLJDBCBPhPw" base_DataType="_A45IlLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5C5hrcnEeKeLJDBCBPhPw" base_Class="_A45Il7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDMLcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45InbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5MDMbcnEeKeLJDBCBPhPw" base_Property="_A45InrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDMrcnEeKeLJDBCBPhPw" base_Property="_A45IobcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDM7cnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45IpLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDNLcnEeKeLJDBCBPhPw" base_Operation="_A45IprcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDNbcnEeKeLJDBCBPhPw" base_Parameter="_A45IqbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5MDNrcnEeKeLJDBCBPhPw" base_Class="_A45Iq7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDN7cnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45IrbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EOperation xmi:id="_A5MDOLcnEeKeLJDBCBPhPw" base_Operation="_A45IrrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDObcnEeKeLJDBCBPhPw" base_Parameter="_A45IsbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDOrcnEeKeLJDBCBPhPw" base_Operation="_A45Is7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDO7cnEeKeLJDBCBPhPw" base_Parameter="_A45ItrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDPLcnEeKeLJDBCBPhPw" base_Parameter="_A45IuLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDPbcnEeKeLJDBCBPhPw" base_Operation="_A45IurcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDPrcnEeKeLJDBCBPhPw" base_Parameter="_A45IvbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDP7cnEeKeLJDBCBPhPw" base_Parameter="_A45Iv7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5MDQLcnEeKeLJDBCBPhPw" base_Class="_A45IwbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDQbcnEeKeLJDBCBPhPw" base_Operation="_A45IwrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDQrcnEeKeLJDBCBPhPw" base_Operation="_A45IxbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDQ7cnEeKeLJDBCBPhPw" base_Operation="_A45IyLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDRLcnEeKeLJDBCBPhPw" base_Operation="_A45Iy7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDRbcnEeKeLJDBCBPhPw" base_Operation="_A45IzrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDRrcnEeKeLJDBCBPhPw" base_Operation="_A45I0bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDR7cnEeKeLJDBCBPhPw" base_Operation="_A45I1LcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDSLcnEeKeLJDBCBPhPw" base_Operation="_A45I17cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDSbcnEeKeLJDBCBPhPw" base_Operation="_A45I2rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDSrcnEeKeLJDBCBPhPw" base_Operation="_A45I3bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDS7cnEeKeLJDBCBPhPw" base_Parameter="_A45I4LcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDTLcnEeKeLJDBCBPhPw" base_Operation="_A45I4rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDTbcnEeKeLJDBCBPhPw" base_Parameter="_A45I5bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDTrcnEeKeLJDBCBPhPw" base_Parameter="_A45I57cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDT7cnEeKeLJDBCBPhPw" base_Operation="_A45I6bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDULcnEeKeLJDBCBPhPw" base_Parameter="_A45I7LcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDUbcnEeKeLJDBCBPhPw" base_Parameter="_A45I7rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDUrcnEeKeLJDBCBPhPw" base_Operation="_A45I8LcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDU7cnEeKeLJDBCBPhPw" base_Parameter="_A45I87cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDVLcnEeKeLJDBCBPhPw" base_Operation="_A45I9bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDVbcnEeKeLJDBCBPhPw" base_Parameter="_A45I-LcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5MDVrcnEeKeLJDBCBPhPw" base_Operation="_A45I-rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDV7cnEeKeLJDBCBPhPw" base_Parameter="_A45I_bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5MDWLcnEeKeLJDBCBPhPw" base_Parameter="_A45I_7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EGenericType xmi:id="_A5MDWbcnEeKeLJDBCBPhPw" base_DataType="_A45JAbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EGenericType xmi:id="_A5MDWrcnEeKeLJDBCBPhPw" base_DataType="_A45JBLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EGenericType xmi:id="_A5MDW7cnEeKeLJDBCBPhPw" base_Class="_A45JB7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EGenericType xmi:id="_A5MDXLcnEeKeLJDBCBPhPw" base_DataType="_A45JCLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5MDXbcnEeKeLJDBCBPhPw" base_Class="_A45JC7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDXrcnEeKeLJDBCBPhPw" base_Property="_A45JDbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5MDX7cnEeKeLJDBCBPhPw" isUnsettable="true" visibility="ReadWrite" base_Property="_A45JFLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDYLcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JF7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDYbcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JGrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDYrcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JHbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDY7cnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JILcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDZLcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JI7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5MDZbcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JJrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0MLcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JKbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0MbcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JLLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0MrcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JL7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0M7cnEeKeLJDBCBPhPw" base_Property="_A45JMbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0NLcnEeKeLJDBCBPhPw" isUnsettable="true" visibility="ReadWrite" base_Property="_A45JNLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0NbcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JN7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0NrcnEeKeLJDBCBPhPw" base_Operation="_A45JOrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0N7cnEeKeLJDBCBPhPw" base_Parameter="_A45JPbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0OLcnEeKeLJDBCBPhPw" base_Operation="_A45JP7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0ObcnEeKeLJDBCBPhPw" base_Operation="_A45JQrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0OrcnEeKeLJDBCBPhPw" base_Parameter="_A45JRbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0O7cnEeKeLJDBCBPhPw" base_Operation="_A45JR7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0PLcnEeKeLJDBCBPhPw" base_Parameter="_A45JSrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0PbcnEeKeLJDBCBPhPw" base_Operation="_A45JTLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0PrcnEeKeLJDBCBPhPw" base_Parameter="_A45JT7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0P7cnEeKeLJDBCBPhPw" base_Operation="_A45JUbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0QLcnEeKeLJDBCBPhPw" base_Operation="_A45JVLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0QbcnEeKeLJDBCBPhPw" base_Parameter="_A45JV7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0QrcnEeKeLJDBCBPhPw" base_Operation="_A45JWbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0Q7cnEeKeLJDBCBPhPw" base_Parameter="_A45JXLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0RLcnEeKeLJDBCBPhPw" base_Operation="_A45JXrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0RbcnEeKeLJDBCBPhPw" base_Parameter="_A45JYbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0RrcnEeKeLJDBCBPhPw" base_Operation="_A45JY7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0R7cnEeKeLJDBCBPhPw" base_Parameter="_A45JZrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5V0SLcnEeKeLJDBCBPhPw" base_Class="_A45JaLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0SbcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45JarcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0SrcnEeKeLJDBCBPhPw" base_Property="_A45JbLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0S7cnEeKeLJDBCBPhPw" base_Property="_A45Jb7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0TLcnEeKeLJDBCBPhPw" isUnsettable="true" visibility="ReadWrite" base_Property="_A45JcrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0TbcnEeKeLJDBCBPhPw" isUnsettable="true" visibility="ReadWrite" base_Property="_A45JdbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EOperation xmi:id="_A5V0TrcnEeKeLJDBCBPhPw" base_Operation="_A45JeLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0T7cnEeKeLJDBCBPhPw" base_Operation="_A45Je7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0ULcnEeKeLJDBCBPhPw" base_Parameter="_A45JfrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5V0UbcnEeKeLJDBCBPhPw" base_Class="_A45JgbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0UrcnEeKeLJDBCBPhPw" base_Property="_A45Jg7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EClass xmi:id="_A5V0U7cnEeKeLJDBCBPhPw" base_Class="_A45JhrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0VLcnEeKeLJDBCBPhPw" base_Property="_A45Jh7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0VbcnEeKeLJDBCBPhPw" base_Property="_A45JibcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0VrcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45JjLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0V7cnEeKeLJDBCBPhPw" base_Property="_A45JjbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0WLcnEeKeLJDBCBPhPw" base_Property="_A45Jj7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0WbcnEeKeLJDBCBPhPw" base_Property="_A45JkbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0WrcnEeKeLJDBCBPhPw" base_Operation="_A45Jk7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0W7cnEeKeLJDBCBPhPw" base_Parameter="_A45JlrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5V0XLcnEeKeLJDBCBPhPw" base_Class="_A45JqLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0XbcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45JqrcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EClass xmi:id="_A5V0XrcnEeKeLJDBCBPhPw" base_Class="_A45JtbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0X7cnEeKeLJDBCBPhPw" base_Property="_A45JvrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0YLcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JwLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0YbcnEeKeLJDBCBPhPw" base_Property="_A45JwbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5V0YrcnEeKeLJDBCBPhPw" base_Class="_A45J37cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5V0Y7cnEeKeLJDBCBPhPw" base_Class="_A45J77cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0ZLcnEeKeLJDBCBPhPw" base_Property="_A45J87cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0ZbcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45J9rcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0ZrcnEeKeLJDBCBPhPw" base_Property="_A45J-LcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_A5V0Z7cnEeKeLJDBCBPhPw" base_Property="_A45J-7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5V0aLcnEeKeLJDBCBPhPw" instanceClassName="java.util.Map$Entry" base_Class="_A45J_rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5V0abcnEeKeLJDBCBPhPw" base_Class="_A45KCrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0arcnEeKeLJDBCBPhPw" base_Property="_A45KDLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EOperation xmi:id="_A5V0a7cnEeKeLJDBCBPhPw" base_Operation="_A45KD7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0bLcnEeKeLJDBCBPhPw" base_Parameter="_A45KErcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0bbcnEeKeLJDBCBPhPw" base_Operation="_A45KFLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0brcnEeKeLJDBCBPhPw" base_Parameter="_A45KF7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_A5V0b7cnEeKeLJDBCBPhPw" base_Operation="_A45KGbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5V0cLcnEeKeLJDBCBPhPw" base_Parameter="_A45KHLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5V0cbcnEeKeLJDBCBPhPw" base_Class="_A45KHrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5V0crcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45KJrcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EDataType xmi:id="_A5V0c7cnEeKeLJDBCBPhPw" instanceClassName="java.math.BigDecimal" base_PrimitiveType="_A45KKbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0dLcnEeKeLJDBCBPhPw" instanceClassName="java.math.BigInteger" base_PrimitiveType="_A45KKrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0dbcnEeKeLJDBCBPhPw" instanceClassName="boolean" base_PrimitiveType="_A45KK7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0drcnEeKeLJDBCBPhPw" xmlName="EBoolean:Object" instanceClassName="java.lang.Boolean" base_PrimitiveType="_A45KLLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0d7cnEeKeLJDBCBPhPw" instanceClassName="byte" base_PrimitiveType="_A45KLrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0eLcnEeKeLJDBCBPhPw" instanceClassName="byte[]" base_PrimitiveType="_A45KL7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0ebcnEeKeLJDBCBPhPw" xmlName="EByte:Object" instanceClassName="java.lang.Byte" base_PrimitiveType="_A45KMLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0ercnEeKeLJDBCBPhPw" instanceClassName="char" base_PrimitiveType="_A45KMrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0e7cnEeKeLJDBCBPhPw" xmlName="EChar:Object" instanceClassName="java.lang.Character" base_PrimitiveType="_A45KM7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0fLcnEeKeLJDBCBPhPw" instanceClassName="java.util.Date" base_PrimitiveType="_A45KNbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0fbcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.common.util.DiagnosticChain" base_PrimitiveType="_A45KNrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0frcnEeKeLJDBCBPhPw" instanceClassName="double" base_PrimitiveType="_A45KN7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0f7cnEeKeLJDBCBPhPw" xmlName="EDouble:Object" instanceClassName="java.lang.Double" base_PrimitiveType="_A45KOLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0gLcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.common.util.EList" base_PrimitiveType="_A5C5QLcnEeKeLJDBCBPhPw"/>
+ <Ecore:ETypeParameter xmi:id="_A5V0gbcnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5QrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0grcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.common.util.Enumerator" base_PrimitiveType="_A5C5RLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0g7cnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap" base_PrimitiveType="_A5C5RbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0hLcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap$Entry" base_PrimitiveType="_A5C5RrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0hbcnEeKeLJDBCBPhPw" instanceClassName="float" base_PrimitiveType="_A5C5R7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0hrcnEeKeLJDBCBPhPw" xmlName="EFloat:Object" instanceClassName="java.lang.Float" base_PrimitiveType="_A5C5SLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0h7cnEeKeLJDBCBPhPw" instanceClassName="int" base_PrimitiveType="_A5C5SrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0iLcnEeKeLJDBCBPhPw" xmlName="EInt:Object" instanceClassName="java.lang.Integer" base_PrimitiveType="_A5C5S7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0ibcnEeKeLJDBCBPhPw" instanceClassName="java.lang.Class" base_PrimitiveType="_A5C5TbcnEeKeLJDBCBPhPw"/>
+ <Ecore:ETypeParameter xmi:id="_A5V0ircnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5T7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0i7cnEeKeLJDBCBPhPw" instanceClassName="java.lang.Object" base_PrimitiveType="_A5C5UbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5V0jLcnEeKeLJDBCBPhPw" instanceClassName="long" base_PrimitiveType="_A5C5UrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5e-ILcnEeKeLJDBCBPhPw" xmlName="ELong:Object" instanceClassName="java.lang.Long" base_PrimitiveType="_A5C5U7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5e-IbcnEeKeLJDBCBPhPw" instanceClassName="java.util.Map" base_PrimitiveType="_A5C5VbcnEeKeLJDBCBPhPw"/>
+ <Ecore:ETypeParameter xmi:id="_A5e-IrcnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5V7cnEeKeLJDBCBPhPw"/>
+ <Ecore:ETypeParameter xmi:id="_A5e-I7cnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5WbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5e-JLcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.ecore.resource.Resource" base_PrimitiveType="_A5C5W7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5e-JbcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.ecore.resource.ResourceSet" base_PrimitiveType="_A5C5XLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5e-JrcnEeKeLJDBCBPhPw" instanceClassName="short" base_PrimitiveType="_A5C5XbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5e-J7cnEeKeLJDBCBPhPw" xmlName="EShort:Object" instanceClassName="java.lang.Short" base_PrimitiveType="_A5C5XrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5e-KLcnEeKeLJDBCBPhPw" instanceClassName="java.lang.String" base_PrimitiveType="_A5C5YLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5e-KbcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.common.util.TreeIterator" base_PrimitiveType="_A5C5YbcnEeKeLJDBCBPhPw"/>
+ <Ecore:ETypeParameter xmi:id="_A5e-KrcnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5Y7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_A5e-K7cnEeKeLJDBCBPhPw" instanceClassName="java.lang.reflect.InvocationTargetException" base_PrimitiveType="_A5C5ZbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_A5e-LLcnEeKeLJDBCBPhPw" base_Class="_A5C5ZrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_A5e-LbcnEeKeLJDBCBPhPw" base_Property="_A5C5Z7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EOperation xmi:id="_A5e-LrcnEeKeLJDBCBPhPw" base_Operation="_A5C5arcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_A5e-L7cnEeKeLJDBCBPhPw" base_Parameter="_A5C5bbcnEeKeLJDBCBPhPw"/>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.di b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.di
new file mode 100644
index 00000000000..a274d0545ab
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.di
@@ -0,0 +1,17 @@
+<?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="notation.notation#_WlS4YLcpEeK8_t7Rpq6ZJA"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="notation.notation#_WlS4YLcpEeK8_t7Rpq6ZJA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.ecore b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.ecore
new file mode 100644
index 00000000000..4cca7c24b8f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.ecore
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="notation"
+ nsURI="http://www.eclipse.org/gmf/runtime/1.0.2/notation" nsPrefix="notation">
+ <eClassifiers xsi:type="ecore:EClass" name="Edge" eSuperTypes="#//View">
+ <eOperations name="createBendpoints" eType="#//Bendpoints">
+ <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="createSourceAnchor" eType="#//Anchor">
+ <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="createTargetAnchor" eType="#//Anchor">
+ <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
+ eType="#//View" resolveProxies="false" eOpposite="#//View/sourceEdges"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
+ eType="#//View" resolveProxies="false" eOpposite="#//View/targetEdges"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bendpoints" eType="#//Bendpoints"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sourceAnchor" eType="#//Anchor"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="targetAnchor" eType="#//Anchor"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//View">
+ <eOperations name="createLayoutConstraint" eType="#//LayoutConstraint">
+ <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="layoutConstraint" eType="#//LayoutConstraint"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Style" abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="FillStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fillColor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="16777215"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transparency" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="gradient" eType="#//GradientData"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LineStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineColor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="11579568"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineWidth" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FontStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontColor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="0"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral="Tahoma"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontHeight" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="9"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="bold" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="italic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="underline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="strikeThrough" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TitleStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="showTitle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SortingStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="sorting" eType="#//Sorting"
+ defaultValueLiteral="None"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="sortingKeys" eType="#//SortKeyMap"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sortedObjects" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DescriptionStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LayoutConstraint" abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Size" eSuperTypes="#//LayoutConstraint">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Location" eSuperTypes="#//LayoutConstraint">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="0"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="0"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Bounds" eSuperTypes="#//Location #//Size"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Ratio" eSuperTypes="#//LayoutConstraint">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+ defaultValueLiteral="-1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Anchor" abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Bendpoints" abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EEnum" name="Sorting">
+ <eLiterals name="None"/>
+ <eLiterals name="Manual" value="1"/>
+ <eLiterals name="Automatic" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="Filtering">
+ <eLiterals name="None"/>
+ <eLiterals name="Manual" value="1"/>
+ <eLiterals name="Automatic" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IdentityAnchor" eSuperTypes="#//Anchor">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral="anchor"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="Routing">
+ <eLiterals name="Manual"/>
+ <eLiterals name="Rectilinear" value="1"/>
+ <eLiterals name="Tree" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="Smoothness">
+ <eLiterals name="None"/>
+ <eLiterals name="Normal" value="1"/>
+ <eLiterals name="Less" value="2"/>
+ <eLiterals name="More" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="JumpLinkStatus">
+ <eLiterals name="None"/>
+ <eLiterals name="All" value="1"/>
+ <eLiterals name="Below" value="2"/>
+ <eLiterals name="Above" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="JumpLinkType">
+ <eLiterals name="Semicircle"/>
+ <eLiterals name="Square" value="1"/>
+ <eLiterals name="Chamfered" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RoutingStyle" eSuperTypes="#//RoundedCornersStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="routing" eType="#//Routing"
+ defaultValueLiteral="Manual"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="smoothness" eType="#//Smoothness"
+ defaultValueLiteral="None"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="avoidObstructions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="closestDistance" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="jumpLinkStatus" eType="#//JumpLinkStatus"
+ defaultValueLiteral="None"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="jumpLinkType" eType="#//JumpLinkType"
+ defaultValueLiteral="Semicircle"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="jumpLinksReverse" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="View" abstract="true" eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
+ <eOperations name="getStyle" eType="#//Style">
+ <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="createChild" eType="#//Node">
+ <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="createStyle" eType="#//Style">
+ <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+ </eOperations>
+ <eOperations name="getNamedStyle" eType="#//NamedStyle">
+ <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+ <eParameters name="name" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="visible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mutable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ transient="true" defaultValueLiteral="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sourceEdges" upperBound="-1"
+ eType="#//Edge" transient="true" resolveProxies="false" eOpposite="#//Edge/source"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="targetEdges" upperBound="-1"
+ eType="#//Edge" transient="true" resolveProxies="false" eOpposite="#//Edge/target"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistedChildren" upperBound="-1"
+ eType="#//Node" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="styles" upperBound="-1"
+ eType="#//Style" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="element" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="diagram" lowerBound="1"
+ eType="#//Diagram" changeable="false" volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transientChildren" upperBound="-1"
+ eType="#//Node" transient="true" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RelativeBendpoints" eSuperTypes="#//Bendpoints">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="points" eType="#//RelativeBendpointList"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Diagram" eSuperTypes="#//View">
+ <eOperations name="createEdge" eType="#//Edge">
+ <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="measurementUnit" eType="#//MeasurementUnit"
+ defaultValueLiteral="Himetric" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistedEdges" upperBound="-1"
+ eType="#//Edge" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="TransientEdges" upperBound="-1"
+ eType="#//Edge" transient="true" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Image">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CanonicalStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="canonical" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ShapeStyle" eSuperTypes="#//FontStyle #//DescriptionStyle #//FillStyle #//LineStyle #//RoundedCornersStyle"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectorStyle" eSuperTypes="#//RoutingStyle #//LineStyle"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="RelativeBendpointList" instanceClassName="java.util.List"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PageStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageX" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="0"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageY" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="0"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageWidth" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageHeight" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DrawerStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="collapsed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GuideStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="horizontalGuides" upperBound="-1"
+ eType="#//Guide" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="verticalGuides" upperBound="-1"
+ eType="#//Guide" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Guide">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="position" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="0"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nodeMap" upperBound="-1"
+ eType="#//NodeEntry" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NodeEntry" instanceClassName="java.util.Map$Entry">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//Alignment"
+ defaultValueLiteral="Center"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="key" lowerBound="1" eType="#//Node"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="Alignment">
+ <eLiterals name="Left"/>
+ <eLiterals name="Right" value="1"/>
+ <eLiterals name="Center" value="2"/>
+ <eLiterals name="Top" value="3"/>
+ <eLiterals name="Bottom" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FilteringStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="filtering" eType="#//Filtering"
+ defaultValueLiteral="None"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="filteringKeys" eType="#//FilterKeyList"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="filteredObjects" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="FilterKeyList" instanceClassName="java.util.List"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="SortKeyMap" instanceClassName="java.util.Map"/>
+ <eClassifiers xsi:type="ecore:EEnum" name="SortingDirection">
+ <eLiterals name="Ascending"/>
+ <eLiterals name="Descending" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DiagramStyle" eSuperTypes="#//PageStyle #//GuideStyle #//DescriptionStyle"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ImageStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="antiAlias" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="maintainAspectRatio" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cropBound" lowerBound="1"
+ eType="#//Bounds" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ImageBufferStyle" eSuperTypes="#//ImageStyle">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="imageBuffer" lowerBound="1"
+ eType="#//Image" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="MeasurementUnit">
+ <eLiterals name="Himetric"/>
+ <eLiterals name="Pixel" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertiesSetStyle" eSuperTypes="#//NamedStyle">
+ <eOperations name="getProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ <eOperations name="setProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+ <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eParameters name="newValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="createProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+ <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eParameters name="instanceType" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDataType"/>
+ <eParameters name="initialValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="removeProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+ <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ <eOperations name="hasProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+ <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ <eOperations name="createProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+ <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eParameters name="initialValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertiesMap" upperBound="-1"
+ eType="#//StringToPropertyValueMapEntry" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringToPropertyValueMapEntry" instanceClassName="java.util.Map$Entry">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//PropertyValue"
+ containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertyValue" eSuperTypes="#//StringObjectConverter">
+ <eOperations name="getValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ <eOperations name="setValue">
+ <eParameters name="newValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="rawValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="instanceType" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDataType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SingleValueStyle" eSuperTypes="#//DataTypeStyle">
+ <eOperations name="getValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ <eOperations name="setValue">
+ <eParameters name="newValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="rawValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ListValueStyle" eSuperTypes="#//DataTypeStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="rawValuesList" unique="false"
+ upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NamedStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringObjectConverter" abstract="true"
+ interface="true">
+ <eOperations name="getStringFromObject" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString">
+ <eParameters name="objectValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="getObjectFromString" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eParameters name="stringValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataTypeStyle" eSuperTypes="#//NamedStyle #//StringObjectConverter">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="instanceType" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDataType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IntValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="intValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IntListValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="intListValue" unique="false"
+ upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DoubleValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="doubleValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDouble"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DoubleListValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="doubleListValue" unique="false"
+ upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDoubleObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringListValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringListValue" unique="false"
+ upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EObjectValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eObjectValue" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EObjectListValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eObjectListValue" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ByteArrayValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="byteArrayValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanListValueStyle" eSuperTypes="#//NamedStyle">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanListValue" unique="false"
+ upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBooleanObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="HintedDiagramLinkStyle" eSuperTypes="#//DiagramLinkStyle #//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="hint" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DiagramLinkStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="diagramLink" eType="#//Diagram"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MultiDiagramLinkStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="diagramLinks" upperBound="-1"
+ eType="#//Diagram"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="TextAlignment">
+ <eLiterals name="Left"/>
+ <eLiterals name="Right" value="1"/>
+ <eLiterals name="Center" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TextStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="textAlignment" eType="#//TextAlignment"
+ defaultValueLiteral="Left"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="LineType">
+ <eLiterals name="Solid"/>
+ <eLiterals name="Dash" value="1"/>
+ <eLiterals name="Dot" value="2"/>
+ <eLiterals name="DashDot" value="3"/>
+ <eLiterals name="DashDotDot" value="4"/>
+ <eLiterals name="Double" value="5"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LineTypeStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineType" eType="#//LineType"
+ defaultValueLiteral="Solid"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ArrowType">
+ <eLiterals name="None"/>
+ <eLiterals name="OpenArrow" value="1"/>
+ <eLiterals name="SolidArrow" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ArrowStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="arrowSource" eType="#//ArrowType"
+ defaultValueLiteral="None"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="arrowTarget" eType="#//ArrowType"
+ defaultValueLiteral="None"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Shape" eSuperTypes="#//Node #//ShapeStyle"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Compartment" eSuperTypes="#//BasicCompartment #//CanonicalStyle #//TitleStyle"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ListCompartment" eSuperTypes="#//BasicCompartment #//SortingStyle #//FilteringStyle #//TitleStyle"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Edge #//ConnectorStyle"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StandardDiagram" eSuperTypes="#//Diagram #//DiagramStyle"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DecorationNode" eSuperTypes="#//BasicDecorationNode"/>
+ <eClassifiers xsi:type="ecore:EClass" name="BasicDecorationNode" eSuperTypes="#//Node"/>
+ <eClassifiers xsi:type="ecore:EClass" name="BasicCompartment" eSuperTypes="#//DecorationNode #//DrawerStyle"/>
+ <eClassifiers xsi:type="ecore:EClass" name="BasicSemanticCompartment" eSuperTypes="#//BasicDecorationNode #//DrawerStyle"/>
+ <eClassifiers xsi:type="ecore:EClass" name="SemanticListCompartment" eSuperTypes="#//BasicSemanticCompartment #//SortingStyle #//FilteringStyle #//TitleStyle"/>
+ <eClassifiers xsi:type="ecore:EEnum" name="GradientStyle">
+ <eLiterals name="Vertical"/>
+ <eLiterals name="Horizontal" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GradientData" instanceClassName="org.eclipse.gmf.runtime.notation.datatype.GradientData"/>
+ <eClassifiers xsi:type="ecore:EClass" name="RoundedCornersStyle" eSuperTypes="#//Style">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="roundedBendpointsRadius"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="0"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.notation b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.notation
new file mode 100644
index 00000000000..51cac6b0174
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.notation
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram 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/4.0.0/UML" xmi:id="_WlS4YLcpEeK8_t7Rpq6ZJA" type="PapyrusUMLClassDiagram" name="Style" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_XdKUgLcpEeK8_t7Rpq6ZJA" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XdTecLcpEeK8_t7Rpq6ZJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XdTecbcpEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XdTecrcpEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XdTec7cpEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XdTedLcpEeK8_t7Rpq6ZJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XdTedbcpEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XdTedrcpEeK8_t7Rpq6ZJA" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XdTed7cpEeK8_t7Rpq6ZJA" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XdTeeLcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XdTeebcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XdTeercpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdTee7cpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XdTefLcpEeK8_t7Rpq6ZJA" type="7007">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XdTefbcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XdTefrcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XdTef7cpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdTegLcpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XdTegbcpEeK8_t7Rpq6ZJA" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XdTegrcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XdTeg7cpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XdTehLcpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdTehbcpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <element xmi:type="uml:Interface" href="notation.uml#_AziHbbcnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdKUgbcpEeK8_t7Rpq6ZJA" x="336" y="108"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFAcELcpEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZFJmALcpEeK8_t7Rpq6ZJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZFJmAbcpEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZFJmArcpEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZFJmA7cpEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZFJmBLcpEeK8_t7Rpq6ZJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZFJmBbcpEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZFJmBrcpEeK8_t7Rpq6ZJA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZFJmB7cpEeK8_t7Rpq6ZJA" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_azPfgLcpEeK8_t7Rpq6ZJA" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="notation.uml#_AziHe7cnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_azPfgbcpEeK8_t7Rpq6ZJA" x="69" y="16"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZFJmCLcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZFJmCbcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZFJmCrcpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFJmC7cpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZFJmDLcpEeK8_t7Rpq6ZJA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZFJmDbcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZFJmDrcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZFJmD7cpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFJmELcpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZFJmEbcpEeK8_t7Rpq6ZJA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZFJmErcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZFJmE7cpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZFJmFLcpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFJmFbcpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <element xmi:type="uml:Class" href="notation.uml#_AziHercnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFAcEbcpEeK8_t7Rpq6ZJA" x="312" y="408"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_dpPcQLcpEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dpZNQLcpEeK8_t7Rpq6ZJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dpZNQbcpEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dpZNQrcpEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dpZNQ7cpEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dpZNRLcpEeK8_t7Rpq6ZJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dpZNRbcpEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dpZNRrcpEeK8_t7Rpq6ZJA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dpZNR7cpEeK8_t7Rpq6ZJA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dpZNSLcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dpZNSbcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dpZNSrcpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpZNS7cpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dpZNTLcpEeK8_t7Rpq6ZJA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dpZNTbcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dpZNTrcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dpZNT7cpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpZNULcpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_dpZNUbcpEeK8_t7Rpq6ZJA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dpZNUrcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dpZNU7cpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dpZNVLcpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpZNVbcpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <element xmi:type="uml:Class" href="notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpPcQbcpEeK8_t7Rpq6ZJA" x="720" y="342"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gD9yQLcpEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gEHjQLcpEeK8_t7Rpq6ZJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gEHjQbcpEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gEHjQrcpEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gEHjQ7cpEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gEHjRLcpEeK8_t7Rpq6ZJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gEHjRbcpEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gEHjRrcpEeK8_t7Rpq6ZJA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gEHjR7cpEeK8_t7Rpq6ZJA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gEHjSLcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gEHjSbcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gEHjSrcpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gEHjS7cpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gEHjTLcpEeK8_t7Rpq6ZJA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gEHjTbcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gEHjTrcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gEHjT7cpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gEHjULcpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gEHjUbcpEeK8_t7Rpq6ZJA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gEHjUrcpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gEHjU7cpEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gEHjVLcpEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gEHjVbcpEeK8_t7Rpq6ZJA"/>
+ </children>
+ <element xmi:type="uml:Class" href="notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gD9yQbcpEeK8_t7Rpq6ZJA" x="708" y="114"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_WlS4YbcpEeK8_t7Rpq6ZJA"/>
+ <element xmi:type="uml:Model" href="notation.uml#_AziHILcnEeKeLJDBCBPhPw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ZIRygLcpEeK8_t7Rpq6ZJA" type="4003" source="_ZFAcELcpEeK8_t7Rpq6ZJA" target="_XdKUgLcpEeK8_t7Rpq6ZJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZIRyg7cpEeK8_t7Rpq6ZJA" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIRyhLcpEeK8_t7Rpq6ZJA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZIRyhbcpEeK8_t7Rpq6ZJA" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIRyhrcpEeK8_t7Rpq6ZJA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZIRygbcpEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="notation.uml#_AziHfbcnEeKeLJDBCBPhPw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZIRygrcpEeK8_t7Rpq6ZJA" points="[0, 0, -203, -491]$[179, 435, -24, -56]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gF5r8LcpEeK8_t7Rpq6ZJA" type="4002" source="_dpPcQLcpEeK8_t7Rpq6ZJA" target="_gD9yQLcpEeK8_t7Rpq6ZJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gF5r87cpEeK8_t7Rpq6ZJA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gF5r9LcpEeK8_t7Rpq6ZJA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_gF5r8bcpEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="notation.uml#_AziHh7cnEeKeLJDBCBPhPw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gF5r8rcpEeK8_t7Rpq6ZJA" points="[-50, -15, 552, 155]$[-602, -170, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_qwC6cLcpEeK8_t7Rpq6ZJA" type="4001" source="_XdKUgLcpEeK8_t7Rpq6ZJA" target="_gD9yQLcpEeK8_t7Rpq6ZJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qwC6c7cpEeK8_t7Rpq6ZJA" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6dLcpEeK8_t7Rpq6ZJA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qwC6dbcpEeK8_t7Rpq6ZJA" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6drcpEeK8_t7Rpq6ZJA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qwC6d7cpEeK8_t7Rpq6ZJA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6eLcpEeK8_t7Rpq6ZJA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qwC6ebcpEeK8_t7Rpq6ZJA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6ercpEeK8_t7Rpq6ZJA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qwC6e7cpEeK8_t7Rpq6ZJA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6fLcpEeK8_t7Rpq6ZJA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qwC6fbcpEeK8_t7Rpq6ZJA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6frcpEeK8_t7Rpq6ZJA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_qwC6cbcpEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="notation.uml#_AziHgrcnEeKeLJDBCBPhPw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qwC6crcpEeK8_t7Rpq6ZJA" points="[50, 0, -322, 0]$[322, 0, -50, 0]"/>
+ </edges>
+</notation:Diagram>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.uml b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.uml
new file mode 100644
index 00000000000..902bcaf0018
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.uml
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Model xmi:id="_AziHILcnEeKeLJDBCBPhPw" name="notation" URI="http://www.eclipse.org/gmf/runtime/1.0.2/notation">
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziHIbcnEeKeLJDBCBPhPw" name="Edge">
+ <generalization xmi:id="_AziHIrcnEeKeLJDBCBPhPw" general="_AziHOrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziHI7cnEeKeLJDBCBPhPw" name="source" type="_AziHOrcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziHfrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziHJLcnEeKeLJDBCBPhPw" name="target" type="_AziHOrcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziHf7cnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziHJbcnEeKeLJDBCBPhPw" name="bendpoints" type="_AziHpLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHprcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHJrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHJ7cnEeKeLJDBCBPhPw" name="sourceAnchor" type="_AziHpbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHqLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHKLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHKbcnEeKeLJDBCBPhPw" name="targetAnchor" type="_AziHpbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHqrcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHKrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_AziHK7cnEeKeLJDBCBPhPw" name="createBendpoints" visibility="public">
+ <ownedParameter xmi:id="_AziHLLcnEeKeLJDBCBPhPw" type="_AziHpLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHLbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHLrcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHL7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziHMLcnEeKeLJDBCBPhPw" name="createSourceAnchor" visibility="public">
+ <ownedParameter xmi:id="_AziHMbcnEeKeLJDBCBPhPw" type="_AziHpbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHMrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHM7cnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHNLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziHNbcnEeKeLJDBCBPhPw" name="createTargetAnchor" visibility="public">
+ <ownedParameter xmi:id="_AziHNrcnEeKeLJDBCBPhPw" type="_AziHpbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHN7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHOLcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHObcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziHOrcnEeKeLJDBCBPhPw" name="View" isAbstract="true">
+ <generalization xmi:id="_AziHO7cnEeKeLJDBCBPhPw">
+ <general xmi:type="uml:Class" href="ecore.uml#_A5C5ZrcnEeKeLJDBCBPhPw"/>
+ </generalization>
+ <ownedAttribute xmi:id="_AziHPLcnEeKeLJDBCBPhPw" name="visible" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHPbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziHPrcnEeKeLJDBCBPhPw" value="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHP7cnEeKeLJDBCBPhPw" name="type" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHQLcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziHQbcnEeKeLJDBCBPhPw" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHQrcnEeKeLJDBCBPhPw" name="mutable" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHQ7cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziHRLcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHRbcnEeKeLJDBCBPhPw" name="sourceEdges" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziHfrcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHRrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHR7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHSLcnEeKeLJDBCBPhPw" name="targetEdges" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziHf7cnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHSbcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHSrcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHS7cnEeKeLJDBCBPhPw" name="persistedChildren" type="_AziHbrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHgLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHTLcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHTbcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHTrcnEeKeLJDBCBPhPw" name="styles" type="_AziHbbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHgrcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHT7cnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHULcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHUbcnEeKeLJDBCBPhPw" name="element" isOrdered="true" association="_AziHhLcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHUrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHU7cnEeKeLJDBCBPhPw" name="diagram" type="_AziHhrcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_AziHoLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziHVLcnEeKeLJDBCBPhPw" name="transientChildren" type="_AziHbrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHorcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHVbcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHVrcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_AziHV7cnEeKeLJDBCBPhPw" name="getStyle" visibility="public">
+ <ownedParameter xmi:id="_AziHWLcnEeKeLJDBCBPhPw" type="_AziHbbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHWbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHWrcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHW7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziHXLcnEeKeLJDBCBPhPw" name="createChild" visibility="public">
+ <ownedParameter xmi:id="_AziHXbcnEeKeLJDBCBPhPw" type="_AziHbrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHXrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHX7cnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHYLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziHYbcnEeKeLJDBCBPhPw" name="createStyle" visibility="public">
+ <ownedParameter xmi:id="_AziHYrcnEeKeLJDBCBPhPw" type="_AziHbbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHY7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHZLcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHZbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziHZrcnEeKeLJDBCBPhPw" name="getNamedStyle" visibility="public">
+ <ownedParameter xmi:id="_AziHZ7cnEeKeLJDBCBPhPw" type="_AziHercnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHaLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHabcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHarcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHa7cnEeKeLJDBCBPhPw" name="name" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHbLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_AziHbbcnEeKeLJDBCBPhPw" name="Style"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziHbrcnEeKeLJDBCBPhPw" name="Node">
+ <generalization xmi:id="_AziHb7cnEeKeLJDBCBPhPw" general="_AziHOrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziHcLcnEeKeLJDBCBPhPw" name="layoutConstraint" type="_AziHd7cnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHeLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHcbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_AziHcrcnEeKeLJDBCBPhPw" name="createLayoutConstraint" visibility="public">
+ <ownedParameter xmi:id="_AziHc7cnEeKeLJDBCBPhPw" type="_AziHd7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHdLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHdbcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHdrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_AziHd7cnEeKeLJDBCBPhPw" name="LayoutConstraint"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHeLcnEeKeLJDBCBPhPw" memberEnd="_AziHcLcnEeKeLJDBCBPhPw _AziHebcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHebcnEeKeLJDBCBPhPw" type="_AziHbrcnEeKeLJDBCBPhPw" association="_AziHeLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziHercnEeKeLJDBCBPhPw" clientDependency="_AziHfbcnEeKeLJDBCBPhPw" name="NamedStyle">
+ <ownedAttribute xmi:id="_AziHe7cnEeKeLJDBCBPhPw" name="name" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHfLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziHfbcnEeKeLJDBCBPhPw" client="_AziHercnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHfrcnEeKeLJDBCBPhPw" memberEnd="_AziHI7cnEeKeLJDBCBPhPw _AziHRbcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHf7cnEeKeLJDBCBPhPw" memberEnd="_AziHJLcnEeKeLJDBCBPhPw _AziHSLcnEeKeLJDBCBPhPw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHgLcnEeKeLJDBCBPhPw" memberEnd="_AziHS7cnEeKeLJDBCBPhPw _AziHgbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHgbcnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHgLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHgrcnEeKeLJDBCBPhPw" memberEnd="_AziHTrcnEeKeLJDBCBPhPw _AziHg7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHg7cnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHgrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHhLcnEeKeLJDBCBPhPw" memberEnd="_AziHUbcnEeKeLJDBCBPhPw _AziHhbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHhbcnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHhLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziHhrcnEeKeLJDBCBPhPw" name="Diagram">
+ <generalization xmi:id="_AziHh7cnEeKeLJDBCBPhPw" general="_AziHOrcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziHiLcnEeKeLJDBCBPhPw" name="name" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHibcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziHircnEeKeLJDBCBPhPw" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHi7cnEeKeLJDBCBPhPw" name="measurementUnit" visibility="public" type="_AziHmbcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHjLcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziHjbcnEeKeLJDBCBPhPw" type="_AziHmbcnEeKeLJDBCBPhPw" instance="_AziHmrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHjrcnEeKeLJDBCBPhPw" name="persistedEdges" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHnLcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHj7cnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHkLcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHkbcnEeKeLJDBCBPhPw" name="TransientEdges" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHnrcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHkrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHk7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_AziHlLcnEeKeLJDBCBPhPw" name="createEdge" visibility="public">
+ <ownedParameter xmi:id="_AziHlbcnEeKeLJDBCBPhPw" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHlrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziHl7cnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHmLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziHmbcnEeKeLJDBCBPhPw" name="MeasurementUnit">
+ <ownedLiteral xmi:id="_AziHmrcnEeKeLJDBCBPhPw" name="Himetric"/>
+ <ownedLiteral xmi:id="_AziHm7cnEeKeLJDBCBPhPw" name="Pixel"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHnLcnEeKeLJDBCBPhPw" memberEnd="_AziHjrcnEeKeLJDBCBPhPw _AziHnbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHnbcnEeKeLJDBCBPhPw" type="_AziHhrcnEeKeLJDBCBPhPw" association="_AziHnLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHnrcnEeKeLJDBCBPhPw" memberEnd="_AziHkbcnEeKeLJDBCBPhPw _AziHn7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHn7cnEeKeLJDBCBPhPw" type="_AziHhrcnEeKeLJDBCBPhPw" association="_AziHnrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHoLcnEeKeLJDBCBPhPw" memberEnd="_AziHU7cnEeKeLJDBCBPhPw _AziHobcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHobcnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHoLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHorcnEeKeLJDBCBPhPw" memberEnd="_AziHVLcnEeKeLJDBCBPhPw _AziHo7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHo7cnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHorcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_AziHpLcnEeKeLJDBCBPhPw" name="Bendpoints"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_AziHpbcnEeKeLJDBCBPhPw" name="Anchor"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHprcnEeKeLJDBCBPhPw" memberEnd="_AziHJbcnEeKeLJDBCBPhPw _AziHp7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHp7cnEeKeLJDBCBPhPw" type="_AziHIbcnEeKeLJDBCBPhPw" association="_AziHprcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHqLcnEeKeLJDBCBPhPw" memberEnd="_AziHJ7cnEeKeLJDBCBPhPw _AziHqbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHqbcnEeKeLJDBCBPhPw" type="_AziHIbcnEeKeLJDBCBPhPw" association="_AziHqLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziHqrcnEeKeLJDBCBPhPw" memberEnd="_AziHKbcnEeKeLJDBCBPhPw _AziHq7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziHq7cnEeKeLJDBCBPhPw" type="_AziHIbcnEeKeLJDBCBPhPw" association="_AziHqrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziHrLcnEeKeLJDBCBPhPw" clientDependency="_AziHtbcnEeKeLJDBCBPhPw" name="FillStyle">
+ <ownedAttribute xmi:id="_AziHrbcnEeKeLJDBCBPhPw" name="fillColor" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHrrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHr7cnEeKeLJDBCBPhPw" value="16777215">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHsLcnEeKeLJDBCBPhPw" name="transparency" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHsbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHsrcnEeKeLJDBCBPhPw" value="-1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHs7cnEeKeLJDBCBPhPw" name="gradient" visibility="public" type="_AziHtrcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHtLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziHtbcnEeKeLJDBCBPhPw" client="_AziHrLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AziHtrcnEeKeLJDBCBPhPw" name="GradientData"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziHt7cnEeKeLJDBCBPhPw" clientDependency="_AziHvrcnEeKeLJDBCBPhPw" name="LineStyle">
+ <ownedAttribute xmi:id="_AziHuLcnEeKeLJDBCBPhPw" name="lineColor" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHubcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHurcnEeKeLJDBCBPhPw" value="11579568">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHu7cnEeKeLJDBCBPhPw" name="lineWidth" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHvLcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHvbcnEeKeLJDBCBPhPw" value="-1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziHvrcnEeKeLJDBCBPhPw" client="_AziHt7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziHv7cnEeKeLJDBCBPhPw" clientDependency="_AziH1bcnEeKeLJDBCBPhPw" name="FontStyle">
+ <ownedAttribute xmi:id="_AziHwLcnEeKeLJDBCBPhPw" name="fontColor" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHwbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHwrcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHw7cnEeKeLJDBCBPhPw" name="fontName" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHxLcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziHxbcnEeKeLJDBCBPhPw" value="Tahoma">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHxrcnEeKeLJDBCBPhPw" name="fontHeight" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHx7cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHyLcnEeKeLJDBCBPhPw" value="9">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHybcnEeKeLJDBCBPhPw" name="bold" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHyrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziHy7cnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHzLcnEeKeLJDBCBPhPw" name="italic" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHzbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziHzrcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziHz7cnEeKeLJDBCBPhPw" name="underline" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH0LcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziH0bcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziH0rcnEeKeLJDBCBPhPw" name="strikeThrough" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH07cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziH1LcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziH1bcnEeKeLJDBCBPhPw" client="_AziHv7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziH1rcnEeKeLJDBCBPhPw" clientDependency="_AziH2rcnEeKeLJDBCBPhPw" name="TitleStyle">
+ <ownedAttribute xmi:id="_AziH17cnEeKeLJDBCBPhPw" name="showTitle" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH2LcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziH2bcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziH2rcnEeKeLJDBCBPhPw" client="_AziH1rcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziH27cnEeKeLJDBCBPhPw" clientDependency="_AziH5LcnEeKeLJDBCBPhPw" name="SortingStyle">
+ <ownedAttribute xmi:id="_AziH3LcnEeKeLJDBCBPhPw" name="sorting" visibility="public" type="_AziH5bcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH3bcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziH3rcnEeKeLJDBCBPhPw" type="_AziH5bcnEeKeLJDBCBPhPw" instance="_AziH5rcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziH37cnEeKeLJDBCBPhPw" name="sortingKeys" visibility="public" type="_AziH6bcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH4LcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziH4bcnEeKeLJDBCBPhPw" name="sortedObjects" isOrdered="true" association="_AziH6rcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH4rcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziH47cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziH5LcnEeKeLJDBCBPhPw" client="_AziH27cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziH5bcnEeKeLJDBCBPhPw" name="Sorting">
+ <ownedLiteral xmi:id="_AziH5rcnEeKeLJDBCBPhPw" name="None"/>
+ <ownedLiteral xmi:id="_AziH57cnEeKeLJDBCBPhPw" name="Manual"/>
+ <ownedLiteral xmi:id="_AziH6LcnEeKeLJDBCBPhPw" name="Automatic"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AziH6bcnEeKeLJDBCBPhPw" name="SortKeyMap"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziH6rcnEeKeLJDBCBPhPw" memberEnd="_AziH4bcnEeKeLJDBCBPhPw _AziH67cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziH67cnEeKeLJDBCBPhPw" type="_AziH27cnEeKeLJDBCBPhPw" association="_AziH6rcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziH7LcnEeKeLJDBCBPhPw" clientDependency="_AziH8LcnEeKeLJDBCBPhPw" name="DescriptionStyle">
+ <ownedAttribute xmi:id="_AziH7bcnEeKeLJDBCBPhPw" name="description" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH7rcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziH77cnEeKeLJDBCBPhPw" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziH8LcnEeKeLJDBCBPhPw" client="_AziH7LcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziH8bcnEeKeLJDBCBPhPw" clientDependency="_AziH-LcnEeKeLJDBCBPhPw" name="Size">
+ <ownedAttribute xmi:id="_AziH8rcnEeKeLJDBCBPhPw" name="width" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH87cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziH9LcnEeKeLJDBCBPhPw" value="-1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziH9bcnEeKeLJDBCBPhPw" name="height" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH9rcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziH97cnEeKeLJDBCBPhPw" value="-1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziH-LcnEeKeLJDBCBPhPw" client="_AziH8bcnEeKeLJDBCBPhPw" supplier="_AziHd7cnEeKeLJDBCBPhPw" contract="_AziHd7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziH-bcnEeKeLJDBCBPhPw" clientDependency="_AziIALcnEeKeLJDBCBPhPw" name="Location">
+ <ownedAttribute xmi:id="_AziH-rcnEeKeLJDBCBPhPw" name="x" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH-7cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziH_LcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziH_bcnEeKeLJDBCBPhPw" name="y" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH_rcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziH_7cnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziIALcnEeKeLJDBCBPhPw" client="_AziH-bcnEeKeLJDBCBPhPw" supplier="_AziHd7cnEeKeLJDBCBPhPw" contract="_AziHd7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIAbcnEeKeLJDBCBPhPw" name="Bounds">
+ <generalization xmi:id="_AziIArcnEeKeLJDBCBPhPw" general="_AziH-bcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_AziIA7cnEeKeLJDBCBPhPw" general="_AziH8bcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIBLcnEeKeLJDBCBPhPw" clientDependency="_AziICLcnEeKeLJDBCBPhPw" name="Ratio">
+ <ownedAttribute xmi:id="_AziIBbcnEeKeLJDBCBPhPw" name="value" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIBrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralReal" xmi:id="_AziIB7cnEeKeLJDBCBPhPw" value="-1.0">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziICLcnEeKeLJDBCBPhPw" client="_AziIBLcnEeKeLJDBCBPhPw" supplier="_AziHd7cnEeKeLJDBCBPhPw" contract="_AziHd7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziICbcnEeKeLJDBCBPhPw" name="Filtering">
+ <ownedLiteral xmi:id="_AziICrcnEeKeLJDBCBPhPw" name="None"/>
+ <ownedLiteral xmi:id="_AziIC7cnEeKeLJDBCBPhPw" name="Manual"/>
+ <ownedLiteral xmi:id="_AziIDLcnEeKeLJDBCBPhPw" name="Automatic"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIDbcnEeKeLJDBCBPhPw" clientDependency="_AziIEbcnEeKeLJDBCBPhPw" name="IdentityAnchor">
+ <ownedAttribute xmi:id="_AziIDrcnEeKeLJDBCBPhPw" name="id" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziID7cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziIELcnEeKeLJDBCBPhPw" value="anchor">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziIEbcnEeKeLJDBCBPhPw" client="_AziIDbcnEeKeLJDBCBPhPw" supplier="_AziHpbcnEeKeLJDBCBPhPw" contract="_AziHpbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIErcnEeKeLJDBCBPhPw" name="Routing">
+ <ownedLiteral xmi:id="_AziIE7cnEeKeLJDBCBPhPw" name="Manual"/>
+ <ownedLiteral xmi:id="_AziIFLcnEeKeLJDBCBPhPw" name="Rectilinear"/>
+ <ownedLiteral xmi:id="_AziIFbcnEeKeLJDBCBPhPw" name="Tree"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIFrcnEeKeLJDBCBPhPw" name="Smoothness">
+ <ownedLiteral xmi:id="_AziIF7cnEeKeLJDBCBPhPw" name="None"/>
+ <ownedLiteral xmi:id="_AziIGLcnEeKeLJDBCBPhPw" name="Normal"/>
+ <ownedLiteral xmi:id="_AziIGbcnEeKeLJDBCBPhPw" name="Less"/>
+ <ownedLiteral xmi:id="_AziIGrcnEeKeLJDBCBPhPw" name="More"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIG7cnEeKeLJDBCBPhPw" name="JumpLinkStatus">
+ <ownedLiteral xmi:id="_AziIHLcnEeKeLJDBCBPhPw" name="None"/>
+ <ownedLiteral xmi:id="_AziIHbcnEeKeLJDBCBPhPw" name="All"/>
+ <ownedLiteral xmi:id="_AziIHrcnEeKeLJDBCBPhPw" name="Below"/>
+ <ownedLiteral xmi:id="_AziIH7cnEeKeLJDBCBPhPw" name="Above"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIILcnEeKeLJDBCBPhPw" name="JumpLinkType">
+ <ownedLiteral xmi:id="_AziIIbcnEeKeLJDBCBPhPw" name="Semicircle"/>
+ <ownedLiteral xmi:id="_AziIIrcnEeKeLJDBCBPhPw" name="Square"/>
+ <ownedLiteral xmi:id="_AziII7cnEeKeLJDBCBPhPw" name="Chamfered"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIJLcnEeKeLJDBCBPhPw" name="RoutingStyle">
+ <generalization xmi:id="_AziIJbcnEeKeLJDBCBPhPw" general="_AziIO7cnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziIJrcnEeKeLJDBCBPhPw" name="routing" visibility="public" type="_AziIErcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIJ7cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIKLcnEeKeLJDBCBPhPw" type="_AziIErcnEeKeLJDBCBPhPw" instance="_AziIE7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIKbcnEeKeLJDBCBPhPw" name="smoothness" visibility="public" type="_AziIFrcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIKrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIK7cnEeKeLJDBCBPhPw" type="_AziIFrcnEeKeLJDBCBPhPw" instance="_AziIF7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziILLcnEeKeLJDBCBPhPw" name="avoidObstructions" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziILbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziILrcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIL7cnEeKeLJDBCBPhPw" name="closestDistance" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIMLcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIMbcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIMrcnEeKeLJDBCBPhPw" name="jumpLinkStatus" visibility="public" type="_AziIG7cnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIM7cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziINLcnEeKeLJDBCBPhPw" type="_AziIG7cnEeKeLJDBCBPhPw" instance="_AziIHLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziINbcnEeKeLJDBCBPhPw" name="jumpLinkType" visibility="public" type="_AziIILcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziINrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIN7cnEeKeLJDBCBPhPw" type="_AziIILcnEeKeLJDBCBPhPw" instance="_AziIIbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIOLcnEeKeLJDBCBPhPw" name="jumpLinksReverse" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIObcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIOrcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIO7cnEeKeLJDBCBPhPw" clientDependency="_AziIP7cnEeKeLJDBCBPhPw" name="RoundedCornersStyle">
+ <ownedAttribute xmi:id="_AziIPLcnEeKeLJDBCBPhPw" name="roundedBendpointsRadius" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIPbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIPrcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziIP7cnEeKeLJDBCBPhPw" client="_AziIO7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIQLcnEeKeLJDBCBPhPw" clientDependency="_AziIQ7cnEeKeLJDBCBPhPw" name="RelativeBendpoints">
+ <ownedAttribute xmi:id="_AziIQbcnEeKeLJDBCBPhPw" name="points" visibility="public" type="_AziIRLcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIQrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziIQ7cnEeKeLJDBCBPhPw" client="_AziIQLcnEeKeLJDBCBPhPw" supplier="_AziHpLcnEeKeLJDBCBPhPw" contract="_AziHpLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AziIRLcnEeKeLJDBCBPhPw" name="RelativeBendpointList"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIRbcnEeKeLJDBCBPhPw" name="Image">
+ <ownedAttribute xmi:id="_AziIRrcnEeKeLJDBCBPhPw" name="data" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByteArray"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIR7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziISLcnEeKeLJDBCBPhPw" clientDependency="_AziITLcnEeKeLJDBCBPhPw" name="CanonicalStyle">
+ <ownedAttribute xmi:id="_AziISbcnEeKeLJDBCBPhPw" name="canonical" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziISrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIS7cnEeKeLJDBCBPhPw" value="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziITLcnEeKeLJDBCBPhPw" client="_AziISLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziITbcnEeKeLJDBCBPhPw" name="ShapeStyle">
+ <generalization xmi:id="_AziITrcnEeKeLJDBCBPhPw" general="_AziHv7cnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_AziIT7cnEeKeLJDBCBPhPw" general="_AziH7LcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_AziIULcnEeKeLJDBCBPhPw" general="_AziHrLcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_AziIUbcnEeKeLJDBCBPhPw" general="_AziHt7cnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_AziIUrcnEeKeLJDBCBPhPw" general="_AziIO7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIU7cnEeKeLJDBCBPhPw" name="ConnectorStyle">
+ <generalization xmi:id="_AziIVLcnEeKeLJDBCBPhPw" general="_AziIJLcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_AziIVbcnEeKeLJDBCBPhPw" general="_AziHt7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIVrcnEeKeLJDBCBPhPw" clientDependency="_AziIY7cnEeKeLJDBCBPhPw" name="PageStyle">
+ <ownedAttribute xmi:id="_AziIV7cnEeKeLJDBCBPhPw" name="pageX" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIWLcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIWbcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIWrcnEeKeLJDBCBPhPw" name="pageY" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIW7cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIXLcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIXbcnEeKeLJDBCBPhPw" name="pageWidth" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIXrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIX7cnEeKeLJDBCBPhPw" value="100">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIYLcnEeKeLJDBCBPhPw" name="pageHeight" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIYbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIYrcnEeKeLJDBCBPhPw" value="100">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziIY7cnEeKeLJDBCBPhPw" client="_AziIVrcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIZLcnEeKeLJDBCBPhPw" clientDependency="_AziIaLcnEeKeLJDBCBPhPw" name="DrawerStyle">
+ <ownedAttribute xmi:id="_AziIZbcnEeKeLJDBCBPhPw" name="collapsed" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIZrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIZ7cnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziIaLcnEeKeLJDBCBPhPw" client="_AziIZLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIabcnEeKeLJDBCBPhPw" clientDependency="_AziIcLcnEeKeLJDBCBPhPw" name="GuideStyle">
+ <ownedAttribute xmi:id="_AziIarcnEeKeLJDBCBPhPw" name="horizontalGuides" type="_AziIcbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIh7cnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIa7cnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziIbLcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIbbcnEeKeLJDBCBPhPw" name="verticalGuides" type="_AziIcbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIibcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIbrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziIb7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziIcLcnEeKeLJDBCBPhPw" client="_AziIabcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIcbcnEeKeLJDBCBPhPw" name="Guide">
+ <ownedAttribute xmi:id="_AziIcrcnEeKeLJDBCBPhPw" name="position" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIc7cnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIdLcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIdbcnEeKeLJDBCBPhPw" name="nodeMap" type="_AziIeLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIhbcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIdrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziId7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIeLcnEeKeLJDBCBPhPw" name="NodeEntry">
+ <ownedAttribute xmi:id="_AziIebcnEeKeLJDBCBPhPw" name="value" visibility="public" type="_AziIfbcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIercnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIe7cnEeKeLJDBCBPhPw" type="_AziIfbcnEeKeLJDBCBPhPw" instance="_AziIgLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIfLcnEeKeLJDBCBPhPw" name="key" type="_AziHbrcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziIg7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIfbcnEeKeLJDBCBPhPw" name="Alignment">
+ <ownedLiteral xmi:id="_AziIfrcnEeKeLJDBCBPhPw" name="Left"/>
+ <ownedLiteral xmi:id="_AziIf7cnEeKeLJDBCBPhPw" name="Right"/>
+ <ownedLiteral xmi:id="_AziIgLcnEeKeLJDBCBPhPw" name="Center"/>
+ <ownedLiteral xmi:id="_AziIgbcnEeKeLJDBCBPhPw" name="Top"/>
+ <ownedLiteral xmi:id="_AziIgrcnEeKeLJDBCBPhPw" name="Bottom"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziIg7cnEeKeLJDBCBPhPw" memberEnd="_AziIfLcnEeKeLJDBCBPhPw _AziIhLcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziIhLcnEeKeLJDBCBPhPw" type="_AziIeLcnEeKeLJDBCBPhPw" association="_AziIg7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziIhbcnEeKeLJDBCBPhPw" memberEnd="_AziIdbcnEeKeLJDBCBPhPw _AziIhrcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziIhrcnEeKeLJDBCBPhPw" type="_AziIcbcnEeKeLJDBCBPhPw" association="_AziIhbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziIh7cnEeKeLJDBCBPhPw" memberEnd="_AziIarcnEeKeLJDBCBPhPw _AziIiLcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziIiLcnEeKeLJDBCBPhPw" type="_AziIabcnEeKeLJDBCBPhPw" association="_AziIh7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziIibcnEeKeLJDBCBPhPw" memberEnd="_AziIbbcnEeKeLJDBCBPhPw _AziIircnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziIircnEeKeLJDBCBPhPw" type="_AziIabcnEeKeLJDBCBPhPw" association="_AziIibcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIi7cnEeKeLJDBCBPhPw" clientDependency="_AziIlLcnEeKeLJDBCBPhPw" name="FilteringStyle">
+ <ownedAttribute xmi:id="_AziIjLcnEeKeLJDBCBPhPw" name="filtering" visibility="public" type="_AziICbcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIjbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIjrcnEeKeLJDBCBPhPw" type="_AziICbcnEeKeLJDBCBPhPw" instance="_AziICrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIj7cnEeKeLJDBCBPhPw" name="filteringKeys" visibility="public" type="_AziIlbcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIkLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIkbcnEeKeLJDBCBPhPw" name="filteredObjects" isOrdered="true" association="_AziIlrcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIkrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziIk7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziIlLcnEeKeLJDBCBPhPw" client="_AziIi7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AziIlbcnEeKeLJDBCBPhPw" name="FilterKeyList"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziIlrcnEeKeLJDBCBPhPw" memberEnd="_AziIkbcnEeKeLJDBCBPhPw _AziIl7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziIl7cnEeKeLJDBCBPhPw" type="_AziIi7cnEeKeLJDBCBPhPw" association="_AziIlrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziImLcnEeKeLJDBCBPhPw" name="SortingDirection">
+ <ownedLiteral xmi:id="_AziImbcnEeKeLJDBCBPhPw" name="Ascending"/>
+ <ownedLiteral xmi:id="_AziImrcnEeKeLJDBCBPhPw" name="Descending"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIm7cnEeKeLJDBCBPhPw" name="DiagramStyle">
+ <generalization xmi:id="_AziInLcnEeKeLJDBCBPhPw" general="_AziIVrcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_AziInbcnEeKeLJDBCBPhPw" general="_AziIabcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_AziInrcnEeKeLJDBCBPhPw" general="_AziH7LcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIn7cnEeKeLJDBCBPhPw" clientDependency="_AziIp7cnEeKeLJDBCBPhPw" name="ImageStyle">
+ <ownedAttribute xmi:id="_AziIoLcnEeKeLJDBCBPhPw" name="antiAlias" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIobcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIorcnEeKeLJDBCBPhPw" value="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIo7cnEeKeLJDBCBPhPw" name="maintainAspectRatio" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIpLcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIpbcnEeKeLJDBCBPhPw" value="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziIprcnEeKeLJDBCBPhPw" name="cropBound" type="_AziIAbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIqLcnEeKeLJDBCBPhPw"/>
+ <interfaceRealization xmi:id="_AziIp7cnEeKeLJDBCBPhPw" client="_AziIn7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziIqLcnEeKeLJDBCBPhPw" memberEnd="_AziIprcnEeKeLJDBCBPhPw _AziIqbcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziIqbcnEeKeLJDBCBPhPw" type="_AziIn7cnEeKeLJDBCBPhPw" association="_AziIqLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIqrcnEeKeLJDBCBPhPw" name="ImageBufferStyle">
+ <generalization xmi:id="_AziIq7cnEeKeLJDBCBPhPw" general="_AziIn7cnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziIrLcnEeKeLJDBCBPhPw" name="imageBuffer" type="_AziIRbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIrbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziIrbcnEeKeLJDBCBPhPw" memberEnd="_AziIrLcnEeKeLJDBCBPhPw _AziIrrcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziIrrcnEeKeLJDBCBPhPw" type="_AziIqrcnEeKeLJDBCBPhPw" association="_AziIrbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziIr7cnEeKeLJDBCBPhPw" name="PropertiesSetStyle">
+ <generalization xmi:id="_AziIsLcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziIsbcnEeKeLJDBCBPhPw" name="propertiesMap" type="_AziI2rcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziI_LcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIsrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziIs7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_AziItLcnEeKeLJDBCBPhPw" name="getProperty" visibility="public">
+ <ownedParameter xmi:id="_AziItbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziItrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziIt7cnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIuLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziIubcnEeKeLJDBCBPhPw" name="setProperty" visibility="public">
+ <ownedParameter xmi:id="_AziIurcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIu7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziIvLcnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIvbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziIvrcnEeKeLJDBCBPhPw" name="newValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIv7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziIwLcnEeKeLJDBCBPhPw" name="createProperty" visibility="public">
+ <ownedParameter xmi:id="_AziIwbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIwrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziIw7cnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIxLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziIxbcnEeKeLJDBCBPhPw" name="instanceType" isOrdered="true">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45J37cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIxrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziIx7cnEeKeLJDBCBPhPw" name="initialValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIyLcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziIybcnEeKeLJDBCBPhPw" name="removeProperty" visibility="public">
+ <ownedParameter xmi:id="_AziIyrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIy7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziIzLcnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIzbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziIzrcnEeKeLJDBCBPhPw" name="hasProperty" visibility="public">
+ <ownedParameter xmi:id="_AziIz7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI0LcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziI0bcnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI0rcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziI07cnEeKeLJDBCBPhPw" name="createProperty" visibility="public">
+ <ownedParameter xmi:id="_AziI1LcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI1bcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziI1rcnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI17cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziI2LcnEeKeLJDBCBPhPw" name="initialValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI2bcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziI2rcnEeKeLJDBCBPhPw" name="StringToPropertyValueMapEntry">
+ <ownedAttribute xmi:id="_AziI27cnEeKeLJDBCBPhPw" name="key" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI3LcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziI3bcnEeKeLJDBCBPhPw" name="value" type="_AziI37cnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziI-rcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI3rcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziI37cnEeKeLJDBCBPhPw" clientDependency="_AziI5LcnEeKeLJDBCBPhPw" name="PropertyValue">
+ <ownedAttribute xmi:id="_AziI4LcnEeKeLJDBCBPhPw" name="rawValue" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI4bcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AziI4rcnEeKeLJDBCBPhPw" name="instanceType" isOrdered="true" association="_AziI-LcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45J37cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI47cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_AziI5LcnEeKeLJDBCBPhPw" client="_AziI37cnEeKeLJDBCBPhPw" supplier="_AziI7bcnEeKeLJDBCBPhPw" contract="_AziI7bcnEeKeLJDBCBPhPw"/>
+ <ownedOperation xmi:id="_AziI5bcnEeKeLJDBCBPhPw" name="getValue" visibility="public">
+ <ownedParameter xmi:id="_AziI5rcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI57cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziI6LcnEeKeLJDBCBPhPw" name="setValue" visibility="public">
+ <ownedParameter xmi:id="_AziI6bcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI6rcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziI67cnEeKeLJDBCBPhPw" name="newValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI7LcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_AziI7bcnEeKeLJDBCBPhPw" name="StringObjectConverter">
+ <ownedOperation xmi:id="_AziI7rcnEeKeLJDBCBPhPw" name="getStringFromObject" visibility="public">
+ <ownedParameter xmi:id="_AziI77cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI8LcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziI8bcnEeKeLJDBCBPhPw" name="objectValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI8rcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AziI87cnEeKeLJDBCBPhPw" name="getObjectFromString" visibility="public">
+ <ownedParameter xmi:id="_AziI9LcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI9bcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AziI9rcnEeKeLJDBCBPhPw" name="stringValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI97cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziI-LcnEeKeLJDBCBPhPw" memberEnd="_AziI4rcnEeKeLJDBCBPhPw _AziI-bcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziI-bcnEeKeLJDBCBPhPw" type="_AziI37cnEeKeLJDBCBPhPw" association="_AziI-LcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziI-rcnEeKeLJDBCBPhPw" memberEnd="_AziI3bcnEeKeLJDBCBPhPw _AziI-7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziI-7cnEeKeLJDBCBPhPw" type="_AziI2rcnEeKeLJDBCBPhPw" association="_AziI-rcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AziI_LcnEeKeLJDBCBPhPw" memberEnd="_AziIsbcnEeKeLJDBCBPhPw _AziI_bcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_AziI_bcnEeKeLJDBCBPhPw" type="_AziIr7cnEeKeLJDBCBPhPw" association="_AziI_LcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AziI_rcnEeKeLJDBCBPhPw" name="SingleValueStyle">
+ <generalization xmi:id="_AziI_7cnEeKeLJDBCBPhPw" general="_Azr4KLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_AziJALcnEeKeLJDBCBPhPw" name="rawValue" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziJAbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_Azr4ILcnEeKeLJDBCBPhPw" name="getValue" visibility="public">
+ <ownedParameter xmi:id="_Azr4IbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4IrcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Azr4I7cnEeKeLJDBCBPhPw" name="setValue" visibility="public">
+ <ownedParameter xmi:id="_Azr4JLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4JbcnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Azr4JrcnEeKeLJDBCBPhPw" name="newValue" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4J7cnEeKeLJDBCBPhPw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4KLcnEeKeLJDBCBPhPw" clientDependency="_Azr4LLcnEeKeLJDBCBPhPw" name="DataTypeStyle">
+ <generalization xmi:id="_Azr4KbcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4KrcnEeKeLJDBCBPhPw" name="instanceType" isOrdered="true" association="_Azr4LbcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45J37cnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4K7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_Azr4LLcnEeKeLJDBCBPhPw" client="_Azr4KLcnEeKeLJDBCBPhPw" supplier="_AziI7bcnEeKeLJDBCBPhPw" contract="_AziI7bcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Azr4LbcnEeKeLJDBCBPhPw" memberEnd="_Azr4KrcnEeKeLJDBCBPhPw _Azr4LrcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_Azr4LrcnEeKeLJDBCBPhPw" type="_Azr4KLcnEeKeLJDBCBPhPw" association="_Azr4LbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4L7cnEeKeLJDBCBPhPw" name="ListValueStyle">
+ <generalization xmi:id="_Azr4MLcnEeKeLJDBCBPhPw" general="_Azr4KLcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4MbcnEeKeLJDBCBPhPw" name="rawValuesList" visibility="public" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4MrcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4M7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4NLcnEeKeLJDBCBPhPw" name="IntValueStyle">
+ <generalization xmi:id="_Azr4NbcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4NrcnEeKeLJDBCBPhPw" name="intValue" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4N7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4OLcnEeKeLJDBCBPhPw" name="IntListValueStyle">
+ <generalization xmi:id="_Azr4ObcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4OrcnEeKeLJDBCBPhPw" name="intListValue" visibility="public" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4O7cnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4PLcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4PbcnEeKeLJDBCBPhPw" name="BooleanValueStyle">
+ <generalization xmi:id="_Azr4PrcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4P7cnEeKeLJDBCBPhPw" name="booleanValue" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4QLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4QbcnEeKeLJDBCBPhPw" name="DoubleValueStyle">
+ <generalization xmi:id="_Azr4QrcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4Q7cnEeKeLJDBCBPhPw" name="doubleValue" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4RLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4RbcnEeKeLJDBCBPhPw" name="DoubleListValueStyle">
+ <generalization xmi:id="_Azr4RrcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4R7cnEeKeLJDBCBPhPw" name="doubleListValue" visibility="public" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4SLcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4SbcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4SrcnEeKeLJDBCBPhPw" name="StringValueStyle">
+ <generalization xmi:id="_Azr4S7cnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4TLcnEeKeLJDBCBPhPw" name="stringValue" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4TbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4TrcnEeKeLJDBCBPhPw" name="StringListValueStyle">
+ <generalization xmi:id="_Azr4T7cnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4ULcnEeKeLJDBCBPhPw" name="stringListValue" visibility="public" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4UbcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4UrcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4U7cnEeKeLJDBCBPhPw" name="EObjectValueStyle">
+ <generalization xmi:id="_Azr4VLcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4VbcnEeKeLJDBCBPhPw" name="eObjectValue" isOrdered="true" association="_Azr4V7cnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4VrcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Azr4V7cnEeKeLJDBCBPhPw" memberEnd="_Azr4VbcnEeKeLJDBCBPhPw _Azr4WLcnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_Azr4WLcnEeKeLJDBCBPhPw" type="_Azr4U7cnEeKeLJDBCBPhPw" association="_Azr4V7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4WbcnEeKeLJDBCBPhPw" name="EObjectListValueStyle">
+ <generalization xmi:id="_Azr4WrcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4W7cnEeKeLJDBCBPhPw" name="eObjectListValue" isOrdered="true" association="_Azr4XrcnEeKeLJDBCBPhPw">
+ <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4XLcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4XbcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Azr4XrcnEeKeLJDBCBPhPw" memberEnd="_Azr4W7cnEeKeLJDBCBPhPw _Azr4X7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_Azr4X7cnEeKeLJDBCBPhPw" type="_Azr4WbcnEeKeLJDBCBPhPw" association="_Azr4XrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4YLcnEeKeLJDBCBPhPw" name="ByteArrayValueStyle">
+ <generalization xmi:id="_Azr4YbcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4YrcnEeKeLJDBCBPhPw" name="byteArrayValue" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByteArray"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4Y7cnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4ZLcnEeKeLJDBCBPhPw" name="BooleanListValueStyle">
+ <generalization xmi:id="_Azr4ZbcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4ZrcnEeKeLJDBCBPhPw" name="booleanListValue" visibility="public" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4Z7cnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4aLcnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4abcnEeKeLJDBCBPhPw" clientDependency="_Azr4bbcnEeKeLJDBCBPhPw" name="HintedDiagramLinkStyle">
+ <generalization xmi:id="_Azr4arcnEeKeLJDBCBPhPw" general="_Azr4brcnEeKeLJDBCBPhPw"/>
+ <ownedAttribute xmi:id="_Azr4a7cnEeKeLJDBCBPhPw" name="hint" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4bLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_Azr4bbcnEeKeLJDBCBPhPw" client="_Azr4abcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4brcnEeKeLJDBCBPhPw" clientDependency="_Azr4cbcnEeKeLJDBCBPhPw" name="DiagramLinkStyle">
+ <ownedAttribute xmi:id="_Azr4b7cnEeKeLJDBCBPhPw" name="diagramLink" type="_AziHhrcnEeKeLJDBCBPhPw" isOrdered="true" association="_Azr4crcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4cLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_Azr4cbcnEeKeLJDBCBPhPw" client="_Azr4brcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Azr4crcnEeKeLJDBCBPhPw" memberEnd="_Azr4b7cnEeKeLJDBCBPhPw _Azr4c7cnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_Azr4c7cnEeKeLJDBCBPhPw" type="_Azr4brcnEeKeLJDBCBPhPw" association="_Azr4crcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4dLcnEeKeLJDBCBPhPw" clientDependency="_Azr4eLcnEeKeLJDBCBPhPw" name="MultiDiagramLinkStyle">
+ <ownedAttribute xmi:id="_Azr4dbcnEeKeLJDBCBPhPw" name="diagramLinks" type="_AziHhrcnEeKeLJDBCBPhPw" isOrdered="true" association="_Azr4ebcnEeKeLJDBCBPhPw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4drcnEeKeLJDBCBPhPw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4d7cnEeKeLJDBCBPhPw" value="*"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_Azr4eLcnEeKeLJDBCBPhPw" client="_Azr4dLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Azr4ebcnEeKeLJDBCBPhPw" memberEnd="_Azr4dbcnEeKeLJDBCBPhPw _Azr4ercnEeKeLJDBCBPhPw">
+ <ownedEnd xmi:id="_Azr4ercnEeKeLJDBCBPhPw" type="_Azr4dLcnEeKeLJDBCBPhPw" association="_Azr4ebcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_Azr4e7cnEeKeLJDBCBPhPw" name="TextAlignment">
+ <ownedLiteral xmi:id="_Azr4fLcnEeKeLJDBCBPhPw" name="Left"/>
+ <ownedLiteral xmi:id="_Azr4fbcnEeKeLJDBCBPhPw" name="Right"/>
+ <ownedLiteral xmi:id="_Azr4frcnEeKeLJDBCBPhPw" name="Center"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4f7cnEeKeLJDBCBPhPw" clientDependency="_Azr4g7cnEeKeLJDBCBPhPw" name="TextStyle">
+ <ownedAttribute xmi:id="_Azr4gLcnEeKeLJDBCBPhPw" name="textAlignment" visibility="public" type="_Azr4e7cnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4gbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_Azr4grcnEeKeLJDBCBPhPw" type="_Azr4e7cnEeKeLJDBCBPhPw" instance="_Azr4fLcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_Azr4g7cnEeKeLJDBCBPhPw" client="_Azr4f7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_Azr4hLcnEeKeLJDBCBPhPw" name="LineType">
+ <ownedLiteral xmi:id="_Azr4hbcnEeKeLJDBCBPhPw" name="Solid"/>
+ <ownedLiteral xmi:id="_Azr4hrcnEeKeLJDBCBPhPw" name="Dash"/>
+ <ownedLiteral xmi:id="_Azr4h7cnEeKeLJDBCBPhPw" name="Dot"/>
+ <ownedLiteral xmi:id="_Azr4iLcnEeKeLJDBCBPhPw" name="DashDot"/>
+ <ownedLiteral xmi:id="_Azr4ibcnEeKeLJDBCBPhPw" name="DashDotDot"/>
+ <ownedLiteral xmi:id="_Azr4ircnEeKeLJDBCBPhPw" name="Double"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4i7cnEeKeLJDBCBPhPw" clientDependency="_Azr4j7cnEeKeLJDBCBPhPw" name="LineTypeStyle">
+ <ownedAttribute xmi:id="_Azr4jLcnEeKeLJDBCBPhPw" name="lineType" visibility="public" type="_Azr4hLcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4jbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_Azr4jrcnEeKeLJDBCBPhPw" type="_Azr4hLcnEeKeLJDBCBPhPw" instance="_Azr4hbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_Azr4j7cnEeKeLJDBCBPhPw" client="_Azr4i7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_Azr4kLcnEeKeLJDBCBPhPw" name="ArrowType">
+ <ownedLiteral xmi:id="_Azr4kbcnEeKeLJDBCBPhPw" name="None"/>
+ <ownedLiteral xmi:id="_Azr4krcnEeKeLJDBCBPhPw" name="OpenArrow"/>
+ <ownedLiteral xmi:id="_Azr4k7cnEeKeLJDBCBPhPw" name="SolidArrow"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4lLcnEeKeLJDBCBPhPw" clientDependency="_Azr4m7cnEeKeLJDBCBPhPw" name="ArrowStyle">
+ <ownedAttribute xmi:id="_Azr4lbcnEeKeLJDBCBPhPw" name="arrowSource" visibility="public" type="_Azr4kLcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4lrcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_Azr4l7cnEeKeLJDBCBPhPw" type="_Azr4kLcnEeKeLJDBCBPhPw" instance="_Azr4kbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Azr4mLcnEeKeLJDBCBPhPw" name="arrowTarget" visibility="public" type="_Azr4kLcnEeKeLJDBCBPhPw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4mbcnEeKeLJDBCBPhPw"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_Azr4mrcnEeKeLJDBCBPhPw" type="_Azr4kLcnEeKeLJDBCBPhPw" instance="_Azr4kbcnEeKeLJDBCBPhPw"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_Azr4m7cnEeKeLJDBCBPhPw" client="_Azr4lLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4nLcnEeKeLJDBCBPhPw" name="Shape">
+ <generalization xmi:id="_Azr4nbcnEeKeLJDBCBPhPw" general="_AziHbrcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4nrcnEeKeLJDBCBPhPw" general="_AziITbcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4n7cnEeKeLJDBCBPhPw" name="Compartment">
+ <generalization xmi:id="_Azr4oLcnEeKeLJDBCBPhPw" general="_Azr4o7cnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4obcnEeKeLJDBCBPhPw" general="_AziISLcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4orcnEeKeLJDBCBPhPw" general="_AziH1rcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4o7cnEeKeLJDBCBPhPw" name="BasicCompartment">
+ <generalization xmi:id="_Azr4pLcnEeKeLJDBCBPhPw" general="_Azr4prcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4pbcnEeKeLJDBCBPhPw" general="_AziIZLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4prcnEeKeLJDBCBPhPw" name="DecorationNode">
+ <generalization xmi:id="_Azr4p7cnEeKeLJDBCBPhPw" general="_Azr4qLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4qLcnEeKeLJDBCBPhPw" name="BasicDecorationNode">
+ <generalization xmi:id="_Azr4qbcnEeKeLJDBCBPhPw" general="_AziHbrcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4qrcnEeKeLJDBCBPhPw" name="ListCompartment">
+ <generalization xmi:id="_Azr4q7cnEeKeLJDBCBPhPw" general="_Azr4o7cnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4rLcnEeKeLJDBCBPhPw" general="_AziH27cnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4rbcnEeKeLJDBCBPhPw" general="_AziIi7cnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4rrcnEeKeLJDBCBPhPw" general="_AziH1rcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4r7cnEeKeLJDBCBPhPw" name="Connector">
+ <generalization xmi:id="_Azr4sLcnEeKeLJDBCBPhPw" general="_AziHIbcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4sbcnEeKeLJDBCBPhPw" general="_AziIU7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4srcnEeKeLJDBCBPhPw" name="StandardDiagram">
+ <generalization xmi:id="_Azr4s7cnEeKeLJDBCBPhPw" general="_AziHhrcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4tLcnEeKeLJDBCBPhPw" general="_AziIm7cnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4tbcnEeKeLJDBCBPhPw" name="BasicSemanticCompartment">
+ <generalization xmi:id="_Azr4trcnEeKeLJDBCBPhPw" general="_Azr4qLcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4t7cnEeKeLJDBCBPhPw" general="_AziIZLcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Azr4uLcnEeKeLJDBCBPhPw" name="SemanticListCompartment">
+ <generalization xmi:id="_Azr4ubcnEeKeLJDBCBPhPw" general="_Azr4tbcnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4urcnEeKeLJDBCBPhPw" general="_AziH27cnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4u7cnEeKeLJDBCBPhPw" general="_AziIi7cnEeKeLJDBCBPhPw"/>
+ <generalization xmi:id="_Azr4vLcnEeKeLJDBCBPhPw" general="_AziH1rcnEeKeLJDBCBPhPw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_Azr4vbcnEeKeLJDBCBPhPw" name="GradientStyle">
+ <ownedLiteral xmi:id="_Azr4vrcnEeKeLJDBCBPhPw" name="Vertical"/>
+ <ownedLiteral xmi:id="_Azr4v7cnEeKeLJDBCBPhPw" name="Horizontal"/>
+ </packagedElement>
+ <profileApplication xmi:id="_Azr4wLcnEeKeLJDBCBPhPw">
+ <eAnnotations xmi:id="_Azr4wbcnEeKeLJDBCBPhPw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_Azr4wrcnEeKeLJDBCBPhPw" base_Package="_AziHILcnEeKeLJDBCBPhPw" nsPrefix="notation"/>
+ <Ecore:EClass xmi:id="_Azr4w7cnEeKeLJDBCBPhPw" base_Class="_AziHIbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr4xLcnEeKeLJDBCBPhPw" base_Property="_AziHI7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_Azr4xbcnEeKeLJDBCBPhPw" base_Property="_AziHJLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_Azr4xrcnEeKeLJDBCBPhPw" base_Property="_AziHJbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr4x7cnEeKeLJDBCBPhPw" base_Property="_AziHJ7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr4yLcnEeKeLJDBCBPhPw" base_Property="_AziHKbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Azr4ybcnEeKeLJDBCBPhPw" base_Operation="_AziHK7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr4yrcnEeKeLJDBCBPhPw" base_Parameter="_AziHLrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Azr4y7cnEeKeLJDBCBPhPw" base_Operation="_AziHMLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr4zLcnEeKeLJDBCBPhPw" base_Parameter="_AziHM7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Azr4zbcnEeKeLJDBCBPhPw" base_Operation="_AziHNbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr4zrcnEeKeLJDBCBPhPw" base_Parameter="_AziHOLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr4z7cnEeKeLJDBCBPhPw" base_Class="_AziHOrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr40LcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_AziHRbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_Azr40bcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_AziHSLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_Azr40rcnEeKeLJDBCBPhPw" base_Property="_AziHS7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr407cnEeKeLJDBCBPhPw" base_Property="_AziHTrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr41LcnEeKeLJDBCBPhPw" isUnsettable="true" base_Property="_AziHUbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr41bcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_AziHU7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr41rcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_AziHVLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Azr417cnEeKeLJDBCBPhPw" base_Operation="_AziHV7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr42LcnEeKeLJDBCBPhPw" base_Parameter="_AziHWrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Azr42bcnEeKeLJDBCBPhPw" base_Operation="_AziHXLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr42rcnEeKeLJDBCBPhPw" base_Parameter="_AziHX7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Azr427cnEeKeLJDBCBPhPw" base_Operation="_AziHYbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr43LcnEeKeLJDBCBPhPw" base_Parameter="_AziHZLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Azr43bcnEeKeLJDBCBPhPw" base_Operation="_AziHZrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr43rcnEeKeLJDBCBPhPw" base_Parameter="_AziHabcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr437cnEeKeLJDBCBPhPw" base_Parameter="_AziHa7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr44LcnEeKeLJDBCBPhPw" base_Interface="_AziHbbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr44bcnEeKeLJDBCBPhPw" base_Class="_AziHbrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr44rcnEeKeLJDBCBPhPw" base_Property="_AziHcLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Azr447cnEeKeLJDBCBPhPw" base_Operation="_AziHcrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr45LcnEeKeLJDBCBPhPw" base_Parameter="_AziHdbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr45bcnEeKeLJDBCBPhPw" base_Interface="_AziHd7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr45rcnEeKeLJDBCBPhPw" base_Class="_AziHercnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr457cnEeKeLJDBCBPhPw" base_Class="_AziHhrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr46LcnEeKeLJDBCBPhPw" base_Property="_AziHjrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr46bcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_AziHkbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Azr46rcnEeKeLJDBCBPhPw" base_Operation="_AziHlLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Azr467cnEeKeLJDBCBPhPw" base_Parameter="_AziHl7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Azr47LcnEeKeLJDBCBPhPw" base_Enumeration="_AziHmbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr47bcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziHmrcnEeKeLJDBCBPhPw" literal="Himetric"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr47rcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziHm7cnEeKeLJDBCBPhPw" literal="Pixel"/>
+ <Ecore:EClass xmi:id="_Azr477cnEeKeLJDBCBPhPw" base_Interface="_AziHpLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr48LcnEeKeLJDBCBPhPw" base_Interface="_AziHpbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr48bcnEeKeLJDBCBPhPw" base_Class="_AziHrLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_Azr48rcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.gmf.runtime.notation.datatype.GradientData" base_PrimitiveType="_AziHtrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr487cnEeKeLJDBCBPhPw" base_Class="_AziHt7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr49LcnEeKeLJDBCBPhPw" base_Class="_AziHv7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr49bcnEeKeLJDBCBPhPw" base_Class="_AziH1rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr49rcnEeKeLJDBCBPhPw" base_Class="_AziH27cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Azr497cnEeKeLJDBCBPhPw" base_Property="_AziH4bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Azr4-LcnEeKeLJDBCBPhPw" base_Enumeration="_AziH5bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr4-bcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziH5rcnEeKeLJDBCBPhPw" literal="None"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr4-rcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziH57cnEeKeLJDBCBPhPw" literal="Manual"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr4-7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziH6LcnEeKeLJDBCBPhPw" literal="Automatic"/>
+ <Ecore:EDataType xmi:id="_Azr4_LcnEeKeLJDBCBPhPw" instanceClassName="java.util.Map" base_PrimitiveType="_AziH6bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr4_bcnEeKeLJDBCBPhPw" base_Class="_AziH7LcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr4_rcnEeKeLJDBCBPhPw" base_Class="_AziH8bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr4_7cnEeKeLJDBCBPhPw" base_Class="_AziH-bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr5ALcnEeKeLJDBCBPhPw" base_Class="_AziIAbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Azr5AbcnEeKeLJDBCBPhPw" base_Class="_AziIBLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Azr5ArcnEeKeLJDBCBPhPw" base_Enumeration="_AziICbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5A7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziICrcnEeKeLJDBCBPhPw" literal="None"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5BLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIC7cnEeKeLJDBCBPhPw" literal="Manual"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5BbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIDLcnEeKeLJDBCBPhPw" literal="Automatic"/>
+ <Ecore:EClass xmi:id="_Azr5BrcnEeKeLJDBCBPhPw" base_Class="_AziIDbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Azr5B7cnEeKeLJDBCBPhPw" base_Enumeration="_AziIErcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5CLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIE7cnEeKeLJDBCBPhPw" literal="Manual"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5CbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIFLcnEeKeLJDBCBPhPw" literal="Rectilinear"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5CrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIFbcnEeKeLJDBCBPhPw" literal="Tree"/>
+ <Ecore:EEnum xmi:id="_Azr5C7cnEeKeLJDBCBPhPw" base_Enumeration="_AziIFrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5DLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIF7cnEeKeLJDBCBPhPw" literal="None"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5DbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIGLcnEeKeLJDBCBPhPw" literal="Normal"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5DrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIGbcnEeKeLJDBCBPhPw" literal="Less"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5D7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIGrcnEeKeLJDBCBPhPw" literal="More"/>
+ <Ecore:EEnum xmi:id="_Azr5ELcnEeKeLJDBCBPhPw" base_Enumeration="_AziIG7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5EbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIHLcnEeKeLJDBCBPhPw" literal="None"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5ErcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIHbcnEeKeLJDBCBPhPw" literal="All"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5E7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIHrcnEeKeLJDBCBPhPw" literal="Below"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5FLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIH7cnEeKeLJDBCBPhPw" literal="Above"/>
+ <Ecore:EEnum xmi:id="_Azr5FbcnEeKeLJDBCBPhPw" base_Enumeration="_AziIILcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5FrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIIbcnEeKeLJDBCBPhPw" literal="Semicircle"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5F7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIIrcnEeKeLJDBCBPhPw" literal="Square"/>
+ <Ecore:EEnumLiteral xmi:id="_Azr5GLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziII7cnEeKeLJDBCBPhPw" literal="Chamfered"/>
+ <Ecore:EClass xmi:id="_Azr5GbcnEeKeLJDBCBPhPw" base_Class="_AziIJLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pILcnEeKeLJDBCBPhPw" base_Class="_AziIO7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pIbcnEeKeLJDBCBPhPw" base_Class="_AziIQLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_Az1pIrcnEeKeLJDBCBPhPw" instanceClassName="java.util.List" base_PrimitiveType="_AziIRLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pI7cnEeKeLJDBCBPhPw" base_Class="_AziIRbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pJLcnEeKeLJDBCBPhPw" base_Class="_AziISLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pJbcnEeKeLJDBCBPhPw" base_Class="_AziITbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pJrcnEeKeLJDBCBPhPw" base_Class="_AziIU7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pJ7cnEeKeLJDBCBPhPw" base_Class="_AziIVrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pKLcnEeKeLJDBCBPhPw" base_Class="_AziIZLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pKbcnEeKeLJDBCBPhPw" base_Class="_AziIabcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pKrcnEeKeLJDBCBPhPw" base_Property="_AziIarcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_Az1pK7cnEeKeLJDBCBPhPw" base_Property="_AziIbbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EClass xmi:id="_Az1pLLcnEeKeLJDBCBPhPw" base_Class="_AziIcbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pLbcnEeKeLJDBCBPhPw" base_Property="_AziIdbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pLrcnEeKeLJDBCBPhPw" instanceClassName="java.util.Map$Entry" base_Class="_AziIeLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pL7cnEeKeLJDBCBPhPw" base_Property="_AziIfLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Az1pMLcnEeKeLJDBCBPhPw" base_Enumeration="_AziIfbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1pMbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIfrcnEeKeLJDBCBPhPw" literal="Left"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1pMrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIf7cnEeKeLJDBCBPhPw" literal="Right"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1pM7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIgLcnEeKeLJDBCBPhPw" literal="Center"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1pNLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIgbcnEeKeLJDBCBPhPw" literal="Top"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1pNbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIgrcnEeKeLJDBCBPhPw" literal="Bottom"/>
+ <Ecore:EClass xmi:id="_Az1pNrcnEeKeLJDBCBPhPw" base_Class="_AziIi7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pN7cnEeKeLJDBCBPhPw" base_Property="_AziIkbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EDataType xmi:id="_Az1pOLcnEeKeLJDBCBPhPw" instanceClassName="java.util.List" base_PrimitiveType="_AziIlbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Az1pObcnEeKeLJDBCBPhPw" base_Enumeration="_AziImLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1pOrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziImbcnEeKeLJDBCBPhPw" literal="Ascending"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1pO7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziImrcnEeKeLJDBCBPhPw" literal="Descending"/>
+ <Ecore:EClass xmi:id="_Az1pPLcnEeKeLJDBCBPhPw" base_Class="_AziIm7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pPbcnEeKeLJDBCBPhPw" base_Class="_AziIn7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pPrcnEeKeLJDBCBPhPw" base_Property="_AziIprcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pP7cnEeKeLJDBCBPhPw" base_Class="_AziIqrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pQLcnEeKeLJDBCBPhPw" base_Property="_AziIrLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pQbcnEeKeLJDBCBPhPw" base_Class="_AziIr7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pQrcnEeKeLJDBCBPhPw" base_Property="_AziIsbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pQ7cnEeKeLJDBCBPhPw" base_Operation="_AziItLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pRLcnEeKeLJDBCBPhPw" base_Parameter="_AziIt7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pRbcnEeKeLJDBCBPhPw" base_Operation="_AziIubcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pRrcnEeKeLJDBCBPhPw" base_Parameter="_AziIvLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pR7cnEeKeLJDBCBPhPw" base_Parameter="_AziIvrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pSLcnEeKeLJDBCBPhPw" base_Operation="_AziIwLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pSbcnEeKeLJDBCBPhPw" base_Parameter="_AziIw7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pSrcnEeKeLJDBCBPhPw" base_Parameter="_AziIxbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pS7cnEeKeLJDBCBPhPw" base_Parameter="_AziIx7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pTLcnEeKeLJDBCBPhPw" base_Operation="_AziIybcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pTbcnEeKeLJDBCBPhPw" base_Parameter="_AziIzLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pTrcnEeKeLJDBCBPhPw" base_Operation="_AziIzrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pT7cnEeKeLJDBCBPhPw" base_Parameter="_AziI0bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pULcnEeKeLJDBCBPhPw" base_Operation="_AziI07cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pUbcnEeKeLJDBCBPhPw" base_Parameter="_AziI1rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pUrcnEeKeLJDBCBPhPw" base_Parameter="_AziI2LcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pU7cnEeKeLJDBCBPhPw" instanceClassName="java.util.Map$Entry" base_Class="_AziI2rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pVLcnEeKeLJDBCBPhPw" base_Property="_AziI3bcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+ <Ecore:EClass xmi:id="_Az1pVbcnEeKeLJDBCBPhPw" base_Class="_AziI37cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pVrcnEeKeLJDBCBPhPw" base_Property="_AziI4rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pV7cnEeKeLJDBCBPhPw" base_Operation="_AziI5bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pWLcnEeKeLJDBCBPhPw" base_Operation="_AziI6LcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pWbcnEeKeLJDBCBPhPw" base_Parameter="_AziI67cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pWrcnEeKeLJDBCBPhPw" base_Interface="_AziI7bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pW7cnEeKeLJDBCBPhPw" base_Operation="_AziI7rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pXLcnEeKeLJDBCBPhPw" base_Parameter="_AziI8bcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pXbcnEeKeLJDBCBPhPw" base_Operation="_AziI87cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pXrcnEeKeLJDBCBPhPw" base_Parameter="_AziI9rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pX7cnEeKeLJDBCBPhPw" base_Class="_AziI_rcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pYLcnEeKeLJDBCBPhPw" base_Operation="_Azr4ILcnEeKeLJDBCBPhPw"/>
+ <Ecore:EOperation xmi:id="_Az1pYbcnEeKeLJDBCBPhPw" base_Operation="_Azr4I7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EParameter xmi:id="_Az1pYrcnEeKeLJDBCBPhPw" base_Parameter="_Azr4JrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pY7cnEeKeLJDBCBPhPw" base_Class="_Azr4KLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pZLcnEeKeLJDBCBPhPw" base_Property="_Azr4KrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pZbcnEeKeLJDBCBPhPw" base_Class="_Azr4L7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pZrcnEeKeLJDBCBPhPw" base_Class="_Azr4NLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pZ7cnEeKeLJDBCBPhPw" base_Class="_Azr4OLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1paLcnEeKeLJDBCBPhPw" base_Class="_Azr4PbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pabcnEeKeLJDBCBPhPw" base_Class="_Azr4QbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1parcnEeKeLJDBCBPhPw" base_Class="_Azr4RbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pa7cnEeKeLJDBCBPhPw" base_Class="_Azr4SrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pbLcnEeKeLJDBCBPhPw" base_Class="_Azr4TrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pbbcnEeKeLJDBCBPhPw" base_Class="_Azr4U7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pbrcnEeKeLJDBCBPhPw" base_Property="_Azr4VbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pb7cnEeKeLJDBCBPhPw" base_Class="_Azr4WbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pcLcnEeKeLJDBCBPhPw" base_Property="_Azr4W7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pcbcnEeKeLJDBCBPhPw" base_Class="_Azr4YLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pcrcnEeKeLJDBCBPhPw" base_Class="_Azr4ZLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pc7cnEeKeLJDBCBPhPw" base_Class="_Azr4abcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pdLcnEeKeLJDBCBPhPw" base_Class="_Azr4brcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pdbcnEeKeLJDBCBPhPw" base_Property="_Azr4b7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az1pdrcnEeKeLJDBCBPhPw" base_Class="_Azr4dLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EReference xmi:id="_Az1pd7cnEeKeLJDBCBPhPw" base_Property="_Azr4dbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Az1peLcnEeKeLJDBCBPhPw" base_Enumeration="_Azr4e7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1pebcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4fLcnEeKeLJDBCBPhPw" literal="Left"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1percnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4fbcnEeKeLJDBCBPhPw" literal="Right"/>
+ <Ecore:EEnumLiteral xmi:id="_Az1pe7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4frcnEeKeLJDBCBPhPw" literal="Center"/>
+ <Ecore:EClass xmi:id="_Az1pfLcnEeKeLJDBCBPhPw" base_Class="_Azr4f7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Az1pfbcnEeKeLJDBCBPhPw" base_Enumeration="_Azr4hLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zELcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4hbcnEeKeLJDBCBPhPw" literal="Solid"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zEbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4hrcnEeKeLJDBCBPhPw" literal="Dash"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zErcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4h7cnEeKeLJDBCBPhPw" literal="Dot"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zE7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4iLcnEeKeLJDBCBPhPw" literal="DashDot"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zFLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4ibcnEeKeLJDBCBPhPw" literal="DashDotDot"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zFbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4ircnEeKeLJDBCBPhPw" literal="Double"/>
+ <Ecore:EClass xmi:id="_Az-zFrcnEeKeLJDBCBPhPw" base_Class="_Azr4i7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Az-zF7cnEeKeLJDBCBPhPw" base_Enumeration="_Azr4kLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zGLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4kbcnEeKeLJDBCBPhPw" literal="None"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zGbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4krcnEeKeLJDBCBPhPw" literal="OpenArrow"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zGrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4k7cnEeKeLJDBCBPhPw" literal="SolidArrow"/>
+ <Ecore:EClass xmi:id="_Az-zG7cnEeKeLJDBCBPhPw" base_Class="_Azr4lLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zHLcnEeKeLJDBCBPhPw" base_Class="_Azr4nLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zHbcnEeKeLJDBCBPhPw" base_Class="_Azr4n7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zHrcnEeKeLJDBCBPhPw" base_Class="_Azr4o7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zH7cnEeKeLJDBCBPhPw" base_Class="_Azr4prcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zILcnEeKeLJDBCBPhPw" base_Class="_Azr4qLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zIbcnEeKeLJDBCBPhPw" base_Class="_Azr4qrcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zIrcnEeKeLJDBCBPhPw" base_Class="_Azr4r7cnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zI7cnEeKeLJDBCBPhPw" base_Class="_Azr4srcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zJLcnEeKeLJDBCBPhPw" base_Class="_Azr4tbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EClass xmi:id="_Az-zJbcnEeKeLJDBCBPhPw" base_Class="_Azr4uLcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnum xmi:id="_Az-zJrcnEeKeLJDBCBPhPw" base_Enumeration="_Azr4vbcnEeKeLJDBCBPhPw"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zJ7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4vrcnEeKeLJDBCBPhPw" literal="Vertical"/>
+ <Ecore:EEnumLiteral xmi:id="_Az-zKLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4v7cnEeKeLJDBCBPhPw" literal="Horizontal"/>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/plugin.properties
new file mode 100644
index 00000000000..52b764e9083
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2013 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:
+# Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers Stacks Model (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/plugin.xml b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/plugin.xml
new file mode 100644
index 00000000000..9c4e3476624
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated layers -->
+ <package
+ uri="org.eclipse.papyrus.layers.0.10"
+ class="org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage"
+ genModel="model/layers.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated layersconfig -->
+ <package
+ uri="org.eclipse.papyrus.layersconfig.0.10"
+ class="org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage"
+ genModel="model/layersconfig.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/ClassnameKind.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/ClassnameKind.java
new file mode 100644
index 00000000000..27b1a9e2d82
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/ClassnameKind.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Classname Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getClassnameKind()
+ * @model
+ * @generated
+ */
+public enum ClassnameKind implements Enumerator {
+ /**
+ * The '<em><b>UNDEFINED</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #UNDEFINED_VALUE
+ * @generated
+ * @ordered
+ */
+ UNDEFINED(0, "UNDEFINED", "UNDEFINED"),
+
+ /**
+ * The '<em><b>EMF CLASSNAME</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #EMF_CLASSNAME_VALUE
+ * @generated
+ * @ordered
+ */
+ EMF_CLASSNAME(1, "EMF_CLASSNAME", "EMF_CLASSNAME"),
+
+ /**
+ * The '<em><b>POJO CLASSNAME</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #POJO_CLASSNAME_VALUE
+ * @generated
+ * @ordered
+ */
+ POJO_CLASSNAME(2, "POJO_CLASSNAME", "POJO_CLASSNAME"),
+
+ /**
+ * The '<em><b>NOT FOUND</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NOT_FOUND_VALUE
+ * @generated
+ * @ordered
+ */
+ NOT_FOUND(3, "NOT_FOUND", "NOT_FOUND");
+
+ /**
+ * The '<em><b>UNDEFINED</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>UNDEFINED</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #UNDEFINED
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int UNDEFINED_VALUE = 0;
+
+ /**
+ * The '<em><b>EMF CLASSNAME</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>EMF CLASSNAME</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EMF_CLASSNAME
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int EMF_CLASSNAME_VALUE = 1;
+
+ /**
+ * The '<em><b>POJO CLASSNAME</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>POJO CLASSNAME</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #POJO_CLASSNAME
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int POJO_CLASSNAME_VALUE = 2;
+
+ /**
+ * The '<em><b>NOT FOUND</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>NOT FOUND</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NOT_FOUND
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int NOT_FOUND_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Classname Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final ClassnameKind[] VALUES_ARRAY =
+ new ClassnameKind[] {
+ UNDEFINED,
+ EMF_CLASSNAME,
+ POJO_CLASSNAME,
+ NOT_FOUND,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Classname Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<ClassnameKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Classname Kind</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ClassnameKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ ClassnameKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Classname Kind</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ClassnameKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ ClassnameKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Classname Kind</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ClassnameKind get(int value) {
+ switch (value) {
+ case UNDEFINED_VALUE: return UNDEFINED;
+ case EMF_CLASSNAME_VALUE: return EMF_CLASSNAME;
+ case POJO_CLASSNAME_VALUE: return POJO_CLASSNAME;
+ case NOT_FOUND_VALUE: return NOT_FOUND;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private ClassnameKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //ClassnameKind
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/Folder.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/Folder.java
new file mode 100644
index 00000000000..8dd60100001
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/Folder.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder#getFolderElements <em>Folder Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getFolder()
+ * @model
+ * @generated
+ */
+public interface Folder extends FolderElement {
+ /**
+ * Returns the value of the '<em><b>Folder Elements</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Folder Elements</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Folder Elements</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getFolder_FolderElements()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ EList<FolderElement> getFolderElements();
+
+} // Folder
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/FolderElement.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/FolderElement.java
new file mode 100644
index 00000000000..16140e6a4d6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/FolderElement.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getFolderElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface FolderElement extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getFolderElement_Name()
+ * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // FolderElement
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/InstanciableElement.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/InstanciableElement.java
new file mode 100644
index 00000000000..d007b7df144
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/InstanciableElement.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Instanciable Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassname <em>Classname</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getBundleID <em>Bundle ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getDisplayName <em>Display Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getIconPath <em>Icon Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassnameKind <em>Classname Kind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface InstanciableElement extends FolderElement {
+ /**
+ * Returns the value of the '<em><b>Classname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Classname</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Classname</em>' attribute.
+ * @see #setClassname(String)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_Classname()
+ * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+ * @generated
+ */
+ String getClassname();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassname <em>Classname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Classname</em>' attribute.
+ * @see #getClassname()
+ * @generated
+ */
+ void setClassname(String value);
+
+ /**
+ * Returns the value of the '<em><b>Bundle ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Bundle ID</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Bundle ID</em>' attribute.
+ * @see #setBundleID(String)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_BundleID()
+ * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+ * @generated
+ */
+ String getBundleID();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getBundleID <em>Bundle ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Bundle ID</em>' attribute.
+ * @see #getBundleID()
+ * @generated
+ */
+ void setBundleID(String value);
+
+ /**
+ * Returns the value of the '<em><b>Display Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Display Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Display Name</em>' attribute.
+ * @see #setDisplayName(String)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_DisplayName()
+ * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDisplayName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getDisplayName <em>Display Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Display Name</em>' attribute.
+ * @see #getDisplayName()
+ * @generated
+ */
+ void setDisplayName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Icon Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Icon Path</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Icon Path</em>' attribute.
+ * @see #setIconPath(String)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_IconPath()
+ * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+ * @generated
+ */
+ String getIconPath();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getIconPath <em>Icon Path</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Icon Path</em>' attribute.
+ * @see #getIconPath()
+ * @generated
+ */
+ void setIconPath(String value);
+
+ /**
+ * Returns the value of the '<em><b>Classname Kind</b></em>' attribute.
+ * The default value is <code>"UNDEFINED"</code>.
+ * The literals are from the enumeration {@link org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Classname Kind</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Classname Kind</em>' attribute.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+ * @see #setClassnameKind(ClassnameKind)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_ClassnameKind()
+ * @model default="UNDEFINED" required="true" ordered="false"
+ * @generated
+ */
+ ClassnameKind getClassnameKind();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassnameKind <em>Classname Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Classname Kind</em>' attribute.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+ * @see #getClassnameKind()
+ * @generated
+ */
+ void setClassnameKind(ClassnameKind value);
+
+} // InstanciableElement
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorConfig.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorConfig.java
new file mode 100644
index 00000000000..dbd603cb23e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorConfig.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator Config</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorConfig()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorConfig extends InstanciableElement {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorDescriptor" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciationException"
+ * @generated
+ */
+ LayerOperatorDescriptor createLayersOperatorDescriptor() throws InstanciationException;
+} // LayerOperatorConfig
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorMultipleBinding.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorMultipleBinding.java
new file mode 100644
index 00000000000..eb8b07225f9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorMultipleBinding.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator Multiple Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings <em>Bindings</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorMultipleBinding()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorMultipleBinding extends FolderElement {
+ /**
+ * Returns the value of the '<em><b>Layer Operator Config</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Operator Config</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Operator Config</em>' reference.
+ * @see #setLayerOperatorConfig(LayerOperatorConfig)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorMultipleBinding_LayerOperatorConfig()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ LayerOperatorConfig getLayerOperatorConfig();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layer Operator Config</em>' reference.
+ * @see #getLayerOperatorConfig()
+ * @generated
+ */
+ void setLayerOperatorConfig(LayerOperatorConfig value);
+
+ /**
+ * Returns the value of the '<em><b>Bindings</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner <em>Owner</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Bindings</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Bindings</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorMultipleBinding_Bindings()
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner
+ * @model opposite="owner" containment="true" ordered="false"
+ * @generated
+ */
+ EList<OperatorBinding> getBindings();
+
+} // LayerOperatorMultipleBinding
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorToOperatorBinding.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorToOperatorBinding.java
new file mode 100644
index 00000000000..7920aa78273
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorToOperatorBinding.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator To Operator Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorToOperatorBinding#getOperators <em>Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorToOperatorBinding#getLayerOperator <em>Layer Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorToOperatorBinding()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorToOperatorBinding extends FolderElement, LayersOperatorBinding {
+ /**
+ * Returns the value of the '<em><b>Operators</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operators</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Operators</em>' reference.
+ * @see #setOperators(OperatorConfig)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorToOperatorBinding_Operators()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ OperatorConfig getOperators();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorToOperatorBinding#getOperators <em>Operators</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Operators</em>' reference.
+ * @see #getOperators()
+ * @generated
+ */
+ void setOperators(OperatorConfig value);
+
+ /**
+ * Returns the value of the '<em><b>Layer Operator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Operator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Operator</em>' reference.
+ * @see #setLayerOperator(LayerOperatorConfig)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorToOperatorBinding_LayerOperator()
+ * @model ordered="false"
+ * @generated
+ */
+ LayerOperatorConfig getLayerOperator();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorToOperatorBinding#getLayerOperator <em>Layer Operator</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layer Operator</em>' reference.
+ * @see #getLayerOperator()
+ * @generated
+ */
+ void setLayerOperator(LayerOperatorConfig value);
+
+} // LayerOperatorToOperatorBinding
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersOperatorBinding.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersOperatorBinding.java
new file mode 100644
index 00000000000..3c4c7aaef7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersOperatorBinding.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layers Operator Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayersOperatorBinding()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface LayersOperatorBinding extends EObject {
+} // LayersOperatorBinding
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigFactory.java
new file mode 100644
index 00000000000..6fd39c8ee9c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigFactory.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage
+ * @generated
+ */
+public interface LayersconfigFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ LayersconfigFactory eINSTANCE = org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Folder</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Folder</em>'.
+ * @generated
+ */
+ Folder createFolder();
+
+ /**
+ * Returns a new object of class '<em>Layer Operator Config</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Operator Config</em>'.
+ * @generated
+ */
+ LayerOperatorConfig createLayerOperatorConfig();
+
+ /**
+ * Returns a new object of class '<em>Operator Config</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Operator Config</em>'.
+ * @generated
+ */
+ OperatorConfig createOperatorConfig();
+
+ /**
+ * Returns a new object of class '<em>Property Id</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Property Id</em>'.
+ * @generated
+ */
+ PropertyId createPropertyId();
+
+ /**
+ * Returns a new object of class '<em>Type Config</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type Config</em>'.
+ * @generated
+ */
+ TypeConfig createTypeConfig();
+
+ /**
+ * Returns a new object of class '<em>Layer Operator Multiple Binding</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Operator Multiple Binding</em>'.
+ * @generated
+ */
+ LayerOperatorMultipleBinding createLayerOperatorMultipleBinding();
+
+ /**
+ * Returns a new object of class '<em>Operator Binding</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Operator Binding</em>'.
+ * @generated
+ */
+ OperatorBinding createOperatorBinding();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ LayersconfigPackage getLayersconfigPackage();
+
+} //LayersconfigFactory
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigPackage.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigPackage.java
new file mode 100644
index 00000000000..6fb6e294858
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigPackage.java
@@ -0,0 +1,1285 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface LayersconfigPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "layersconfig";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "org.eclipse.papyrus.layersconfig.0.10";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "layersconfig";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ LayersconfigPackage eINSTANCE = org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl <em>Folder Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getFolderElement()
+ * @generated
+ */
+ int FOLDER_ELEMENT = 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER_ELEMENT__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Folder Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER_ELEMENT_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Folder Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER_ELEMENT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl <em>Folder</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getFolder()
+ * @generated
+ */
+ int FOLDER = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER__NAME = FOLDER_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Folder Elements</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER__FOLDER_ELEMENTS = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Folder</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Folder</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl <em>Instanciable Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getInstanciableElement()
+ * @generated
+ */
+ int INSTANCIABLE_ELEMENT = 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCIABLE_ELEMENT__NAME = FOLDER_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Classname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCIABLE_ELEMENT__CLASSNAME = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Bundle ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCIABLE_ELEMENT__BUNDLE_ID = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Display Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCIABLE_ELEMENT__DISPLAY_NAME = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Icon Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCIABLE_ELEMENT__ICON_PATH = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Classname Kind</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCIABLE_ELEMENT__CLASSNAME_KIND = FOLDER_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Instanciable Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCIABLE_ELEMENT_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 5;
+
+ /**
+ * The number of operations of the '<em>Instanciable Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCIABLE_ELEMENT_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl <em>Layer Operator Config</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorConfig()
+ * @generated
+ */
+ int LAYER_OPERATOR_CONFIG = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_CONFIG__NAME = INSTANCIABLE_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Classname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_CONFIG__CLASSNAME = INSTANCIABLE_ELEMENT__CLASSNAME;
+
+ /**
+ * The feature id for the '<em><b>Bundle ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_CONFIG__BUNDLE_ID = INSTANCIABLE_ELEMENT__BUNDLE_ID;
+
+ /**
+ * The feature id for the '<em><b>Display Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_CONFIG__DISPLAY_NAME = INSTANCIABLE_ELEMENT__DISPLAY_NAME;
+
+ /**
+ * The feature id for the '<em><b>Icon Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_CONFIG__ICON_PATH = INSTANCIABLE_ELEMENT__ICON_PATH;
+
+ /**
+ * The feature id for the '<em><b>Classname Kind</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_CONFIG__CLASSNAME_KIND = INSTANCIABLE_ELEMENT__CLASSNAME_KIND;
+
+ /**
+ * The number of structural features of the '<em>Layer Operator Config</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_CONFIG_FEATURE_COUNT = INSTANCIABLE_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Create Layers Operator Descriptor</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_CONFIG___CREATE_LAYERS_OPERATOR_DESCRIPTOR = INSTANCIABLE_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Layer Operator Config</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_CONFIG_OPERATION_COUNT = INSTANCIABLE_ELEMENT_OPERATION_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl <em>Operator Config</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getOperatorConfig()
+ * @generated
+ */
+ int OPERATOR_CONFIG = 4;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_CONFIG__NAME = INSTANCIABLE_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Classname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_CONFIG__CLASSNAME = INSTANCIABLE_ELEMENT__CLASSNAME;
+
+ /**
+ * The feature id for the '<em><b>Bundle ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_CONFIG__BUNDLE_ID = INSTANCIABLE_ELEMENT__BUNDLE_ID;
+
+ /**
+ * The feature id for the '<em><b>Display Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_CONFIG__DISPLAY_NAME = INSTANCIABLE_ELEMENT__DISPLAY_NAME;
+
+ /**
+ * The feature id for the '<em><b>Icon Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_CONFIG__ICON_PATH = INSTANCIABLE_ELEMENT__ICON_PATH;
+
+ /**
+ * The feature id for the '<em><b>Classname Kind</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_CONFIG__CLASSNAME_KIND = INSTANCIABLE_ELEMENT__CLASSNAME_KIND;
+
+ /**
+ * The number of structural features of the '<em>Operator Config</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_CONFIG_FEATURE_COUNT = INSTANCIABLE_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Create Operator Descriptor</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_CONFIG___CREATE_OPERATOR_DESCRIPTOR = INSTANCIABLE_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Operator Config</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_CONFIG_OPERATION_COUNT = INSTANCIABLE_ELEMENT_OPERATION_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl <em>Property Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getPropertyId()
+ * @generated
+ */
+ int PROPERTY_ID = 5;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_ID__NAME = FOLDER_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_ID__TYPE = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Property Id</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_ID_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Property Id</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_ID_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.TypeConfigImpl <em>Type Config</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.TypeConfigImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getTypeConfig()
+ * @generated
+ */
+ int TYPE_CONFIG = 6;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_CONFIG__NAME = FOLDER_ELEMENT__NAME;
+
+ /**
+ * The number of structural features of the '<em>Type Config</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_CONFIG_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Type Config</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_CONFIG_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl <em>Layer Operator Multiple Binding</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorMultipleBinding()
+ * @generated
+ */
+ int LAYER_OPERATOR_MULTIPLE_BINDING = 7;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_MULTIPLE_BINDING__NAME = FOLDER_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Layer Operator Config</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Layer Operator Multiple Binding</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_MULTIPLE_BINDING_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of operations of the '<em>Layer Operator Multiple Binding</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_MULTIPLE_BINDING_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl <em>Operator Binding</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getOperatorBinding()
+ * @generated
+ */
+ int OPERATOR_BINDING = 8;
+
+ /**
+ * The feature id for the '<em><b>Operator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_BINDING__OPERATOR = 0;
+
+ /**
+ * The feature id for the '<em><b>Layer Operator Config</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_BINDING__LAYER_OPERATOR_CONFIG = 1;
+
+ /**
+ * The feature id for the '<em><b>Property Id</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_BINDING__PROPERTY_ID = 2;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_BINDING__OWNER = 3;
+
+ /**
+ * The number of structural features of the '<em>Operator Binding</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_BINDING_FEATURE_COUNT = 4;
+
+ /**
+ * The number of operations of the '<em>Operator Binding</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATOR_BINDING_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind <em>Classname Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getClassnameKind()
+ * @generated
+ */
+ int CLASSNAME_KIND = 9;
+
+ /**
+ * The meta object id for the '<em>String</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getString()
+ * @generated
+ */
+ int STRING = 10;
+
+
+ /**
+ * The meta object id for the '<em>Instanciation Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.InstanciationException
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getInstanciationException()
+ * @generated
+ */
+ int INSTANCIATION_EXCEPTION = 11;
+
+ /**
+ * The meta object id for the '<em>Layer Operator Descriptor</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorDescriptor()
+ * @generated
+ */
+ int LAYER_OPERATOR_DESCRIPTOR = 12;
+
+
+ /**
+ * The meta object id for the '<em>Property Operator</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getPropertyOperator()
+ * @generated
+ */
+ int PROPERTY_OPERATOR = 13;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder <em>Folder</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Folder</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.Folder
+ * @generated
+ */
+ EClass getFolder();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder#getFolderElements <em>Folder Elements</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Folder Elements</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.Folder#getFolderElements()
+ * @see #getFolder()
+ * @generated
+ */
+ EReference getFolder_FolderElements();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement <em>Folder Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Folder Element</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement
+ * @generated
+ */
+ EClass getFolderElement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement#getName()
+ * @see #getFolderElement()
+ * @generated
+ */
+ EAttribute getFolderElement_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig <em>Layer Operator Config</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Operator Config</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig
+ * @generated
+ */
+ EClass getLayerOperatorConfig();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig#createLayersOperatorDescriptor() <em>Create Layers Operator Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Create Layers Operator Descriptor</em>' operation.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig#createLayersOperatorDescriptor()
+ * @generated
+ */
+ EOperation getLayerOperatorConfig__CreateLayersOperatorDescriptor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement <em>Instanciable Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Instanciable Element</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement
+ * @generated
+ */
+ EClass getInstanciableElement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassname <em>Classname</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Classname</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassname()
+ * @see #getInstanciableElement()
+ * @generated
+ */
+ EAttribute getInstanciableElement_Classname();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getBundleID <em>Bundle ID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Bundle ID</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getBundleID()
+ * @see #getInstanciableElement()
+ * @generated
+ */
+ EAttribute getInstanciableElement_BundleID();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getDisplayName <em>Display Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Display Name</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getDisplayName()
+ * @see #getInstanciableElement()
+ * @generated
+ */
+ EAttribute getInstanciableElement_DisplayName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getIconPath <em>Icon Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Icon Path</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getIconPath()
+ * @see #getInstanciableElement()
+ * @generated
+ */
+ EAttribute getInstanciableElement_IconPath();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassnameKind <em>Classname Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Classname Kind</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassnameKind()
+ * @see #getInstanciableElement()
+ * @generated
+ */
+ EAttribute getInstanciableElement_ClassnameKind();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig <em>Operator Config</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Operator Config</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig
+ * @generated
+ */
+ EClass getOperatorConfig();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig#createOperatorDescriptor() <em>Create Operator Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Create Operator Descriptor</em>' operation.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig#createOperatorDescriptor()
+ * @generated
+ */
+ EOperation getOperatorConfig__CreateOperatorDescriptor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId <em>Property Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property Id</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId
+ * @generated
+ */
+ EClass getPropertyId();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId#getType()
+ * @see #getPropertyId()
+ * @generated
+ */
+ EReference getPropertyId_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig <em>Type Config</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type Config</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig
+ * @generated
+ */
+ EClass getTypeConfig();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding <em>Layer Operator Multiple Binding</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Operator Multiple Binding</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding
+ * @generated
+ */
+ EClass getLayerOperatorMultipleBinding();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Layer Operator Config</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getLayerOperatorConfig()
+ * @see #getLayerOperatorMultipleBinding()
+ * @generated
+ */
+ EReference getLayerOperatorMultipleBinding_LayerOperatorConfig();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Bindings</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings()
+ * @see #getLayerOperatorMultipleBinding()
+ * @generated
+ */
+ EReference getLayerOperatorMultipleBinding_Bindings();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding <em>Operator Binding</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Operator Binding</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding
+ * @generated
+ */
+ EClass getOperatorBinding();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOperator <em>Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Operator</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOperator()
+ * @see #getOperatorBinding()
+ * @generated
+ */
+ EReference getOperatorBinding_Operator();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Layer Operator Config</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getLayerOperatorConfig()
+ * @see #getOperatorBinding()
+ * @generated
+ */
+ EReference getOperatorBinding_LayerOperatorConfig();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getPropertyId <em>Property Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Property Id</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getPropertyId()
+ * @see #getOperatorBinding()
+ * @generated
+ */
+ EReference getOperatorBinding_PropertyId();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner <em>Owner</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Owner</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner()
+ * @see #getOperatorBinding()
+ * @generated
+ */
+ EReference getOperatorBinding_Owner();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind <em>Classname Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Classname Kind</em>'.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+ * @generated
+ */
+ EEnum getClassnameKind();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>String</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>String</em>'.
+ * @see java.lang.String
+ * @model instanceClass="java.lang.String"
+ * @generated
+ */
+ EDataType getString();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.InstanciationException <em>Instanciation Exception</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Instanciation Exception</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.InstanciationException
+ * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.InstanciationException"
+ * @generated
+ */
+ EDataType getInstanciationException();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor <em>Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Layer Operator Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+ * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor"
+ * @generated
+ */
+ EDataType getLayerOperatorDescriptor();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator <em>Property Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Property Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+ * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator"
+ * @generated
+ */
+ EDataType getPropertyOperator();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ LayersconfigFactory getLayersconfigFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl <em>Folder</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getFolder()
+ * @generated
+ */
+ EClass FOLDER = eINSTANCE.getFolder();
+
+ /**
+ * The meta object literal for the '<em><b>Folder Elements</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FOLDER__FOLDER_ELEMENTS = eINSTANCE.getFolder_FolderElements();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl <em>Folder Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getFolderElement()
+ * @generated
+ */
+ EClass FOLDER_ELEMENT = eINSTANCE.getFolderElement();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FOLDER_ELEMENT__NAME = eINSTANCE.getFolderElement_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl <em>Layer Operator Config</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorConfig()
+ * @generated
+ */
+ EClass LAYER_OPERATOR_CONFIG = eINSTANCE.getLayerOperatorConfig();
+
+ /**
+ * The meta object literal for the '<em><b>Create Layers Operator Descriptor</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_CONFIG___CREATE_LAYERS_OPERATOR_DESCRIPTOR = eINSTANCE.getLayerOperatorConfig__CreateLayersOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl <em>Instanciable Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getInstanciableElement()
+ * @generated
+ */
+ EClass INSTANCIABLE_ELEMENT = eINSTANCE.getInstanciableElement();
+
+ /**
+ * The meta object literal for the '<em><b>Classname</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INSTANCIABLE_ELEMENT__CLASSNAME = eINSTANCE.getInstanciableElement_Classname();
+
+ /**
+ * The meta object literal for the '<em><b>Bundle ID</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INSTANCIABLE_ELEMENT__BUNDLE_ID = eINSTANCE.getInstanciableElement_BundleID();
+
+ /**
+ * The meta object literal for the '<em><b>Display Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INSTANCIABLE_ELEMENT__DISPLAY_NAME = eINSTANCE.getInstanciableElement_DisplayName();
+
+ /**
+ * The meta object literal for the '<em><b>Icon Path</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INSTANCIABLE_ELEMENT__ICON_PATH = eINSTANCE.getInstanciableElement_IconPath();
+
+ /**
+ * The meta object literal for the '<em><b>Classname Kind</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INSTANCIABLE_ELEMENT__CLASSNAME_KIND = eINSTANCE.getInstanciableElement_ClassnameKind();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl <em>Operator Config</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getOperatorConfig()
+ * @generated
+ */
+ EClass OPERATOR_CONFIG = eINSTANCE.getOperatorConfig();
+
+ /**
+ * The meta object literal for the '<em><b>Create Operator Descriptor</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation OPERATOR_CONFIG___CREATE_OPERATOR_DESCRIPTOR = eINSTANCE.getOperatorConfig__CreateOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl <em>Property Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getPropertyId()
+ * @generated
+ */
+ EClass PROPERTY_ID = eINSTANCE.getPropertyId();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY_ID__TYPE = eINSTANCE.getPropertyId_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.TypeConfigImpl <em>Type Config</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.TypeConfigImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getTypeConfig()
+ * @generated
+ */
+ EClass TYPE_CONFIG = eINSTANCE.getTypeConfig();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl <em>Layer Operator Multiple Binding</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorMultipleBinding()
+ * @generated
+ */
+ EClass LAYER_OPERATOR_MULTIPLE_BINDING = eINSTANCE.getLayerOperatorMultipleBinding();
+
+ /**
+ * The meta object literal for the '<em><b>Layer Operator Config</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG = eINSTANCE.getLayerOperatorMultipleBinding_LayerOperatorConfig();
+
+ /**
+ * The meta object literal for the '<em><b>Bindings</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS = eINSTANCE.getLayerOperatorMultipleBinding_Bindings();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl <em>Operator Binding</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getOperatorBinding()
+ * @generated
+ */
+ EClass OPERATOR_BINDING = eINSTANCE.getOperatorBinding();
+
+ /**
+ * The meta object literal for the '<em><b>Operator</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATOR_BINDING__OPERATOR = eINSTANCE.getOperatorBinding_Operator();
+
+ /**
+ * The meta object literal for the '<em><b>Layer Operator Config</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATOR_BINDING__LAYER_OPERATOR_CONFIG = eINSTANCE.getOperatorBinding_LayerOperatorConfig();
+
+ /**
+ * The meta object literal for the '<em><b>Property Id</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATOR_BINDING__PROPERTY_ID = eINSTANCE.getOperatorBinding_PropertyId();
+
+ /**
+ * The meta object literal for the '<em><b>Owner</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATOR_BINDING__OWNER = eINSTANCE.getOperatorBinding_Owner();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind <em>Classname Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getClassnameKind()
+ * @generated
+ */
+ EEnum CLASSNAME_KIND = eINSTANCE.getClassnameKind();
+
+ /**
+ * The meta object literal for the '<em>String</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getString()
+ * @generated
+ */
+ EDataType STRING = eINSTANCE.getString();
+
+ /**
+ * The meta object literal for the '<em>Instanciation Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.InstanciationException
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getInstanciationException()
+ * @generated
+ */
+ EDataType INSTANCIATION_EXCEPTION = eINSTANCE.getInstanciationException();
+
+ /**
+ * The meta object literal for the '<em>Layer Operator Descriptor</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorDescriptor()
+ * @generated
+ */
+ EDataType LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getLayerOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '<em>Property Operator</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getPropertyOperator()
+ * @generated
+ */
+ EDataType PROPERTY_OPERATOR = eINSTANCE.getPropertyOperator();
+
+ }
+
+} //LayersconfigPackage
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorBinding.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorBinding.java
new file mode 100644
index 00000000000..90e2926b349
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorBinding.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Operator Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOperator <em>Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getPropertyId <em>Property Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner <em>Owner</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding()
+ * @model
+ * @generated
+ */
+public interface OperatorBinding extends EObject {
+ /**
+ * Returns the value of the '<em><b>Operator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Operator</em>' reference.
+ * @see #setOperator(OperatorConfig)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding_Operator()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ OperatorConfig getOperator();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOperator <em>Operator</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Operator</em>' reference.
+ * @see #getOperator()
+ * @generated
+ */
+ void setOperator(OperatorConfig value);
+
+ /**
+ * Returns the value of the '<em><b>Layer Operator Config</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Operator Config</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Operator Config</em>' reference.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding_LayerOperatorConfig()
+ * @model required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+ * @generated
+ */
+ LayerOperatorConfig getLayerOperatorConfig();
+
+ /**
+ * Returns the value of the '<em><b>Property Id</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Id</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Id</em>' reference.
+ * @see #setPropertyId(PropertyId)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding_PropertyId()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ PropertyId getPropertyId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getPropertyId <em>Property Id</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property Id</em>' reference.
+ * @see #getPropertyId()
+ * @generated
+ */
+ void setPropertyId(PropertyId value);
+
+ /**
+ * Returns the value of the '<em><b>Owner</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Owner</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Owner</em>' container reference.
+ * @see #setOwner(LayerOperatorMultipleBinding)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding_Owner()
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings
+ * @model opposite="bindings" required="true" transient="false" ordered="false"
+ * @generated
+ */
+ LayerOperatorMultipleBinding getOwner();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner <em>Owner</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Owner</em>' container reference.
+ * @see #getOwner()
+ * @generated
+ */
+ void setOwner(LayerOperatorMultipleBinding value);
+
+} // OperatorBinding
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorConfig.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorConfig.java
new file mode 100644
index 00000000000..3439d445d09
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorConfig.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Operator Config</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorConfig()
+ * @model
+ * @generated
+ */
+public interface OperatorConfig extends InstanciableElement {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyOperator" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciationException"
+ * @generated
+ */
+ PropertyOperator createOperatorDescriptor() throws InstanciationException;
+
+} // OperatorConfig
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/PropertyId.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/PropertyId.java
new file mode 100644
index 00000000000..38f831d10a5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/PropertyId.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Id</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getPropertyId()
+ * @model
+ * @generated
+ */
+public interface PropertyId extends FolderElement {
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(TypeConfig)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getPropertyId_Type()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TypeConfig getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId#getType <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(TypeConfig value);
+} // PropertyId
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/SimpleBinding.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/SimpleBinding.java
new file mode 100644
index 00000000000..5c5e496992d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/SimpleBinding.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.SimpleBinding#getOperators <em>Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.SimpleBinding#getLayerOperatorMultipleBinding <em>Layer Operator Multiple Binding</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getSimpleBinding()
+ * @model
+ * @generated
+ */
+public interface SimpleBinding extends LayersOperatorBinding {
+ /**
+ * Returns the value of the '<em><b>Operators</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operators</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Operators</em>' reference.
+ * @see #setOperators(OperatorConfig)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getSimpleBinding_Operators()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ OperatorConfig getOperators();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.SimpleBinding#getOperators <em>Operators</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Operators</em>' reference.
+ * @see #getOperators()
+ * @generated
+ */
+ void setOperators(OperatorConfig value);
+
+ /**
+ * Returns the value of the '<em><b>Layer Operator Multiple Binding</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Operator Multiple Binding</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Operator Multiple Binding</em>' container reference.
+ * @see #setLayerOperatorMultipleBinding(LayerOperatorMultipleBinding)
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getSimpleBinding_LayerOperatorMultipleBinding()
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings
+ * @model opposite="bindings" required="true" transient="false" ordered="false"
+ * @generated
+ */
+ LayerOperatorMultipleBinding getLayerOperatorMultipleBinding();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.SimpleBinding#getLayerOperatorMultipleBinding <em>Layer Operator Multiple Binding</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layer Operator Multiple Binding</em>' container reference.
+ * @see #getLayerOperatorMultipleBinding()
+ * @generated
+ */
+ void setLayerOperatorMultipleBinding(LayerOperatorMultipleBinding value);
+
+} // SimpleBinding
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/TypeConfig.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/TypeConfig.java
new file mode 100644
index 00000000000..e96914094bd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/TypeConfig.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Config</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getTypeConfig()
+ * @model
+ * @generated
+ */
+public interface TypeConfig extends FolderElement {
+} // TypeConfig
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderElementImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderElementImpl.java
new file mode 100644
index 00000000000..6e8587a51c5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderElementImpl.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class FolderElementImpl extends MinimalEObjectImpl.Container implements FolderElement {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FolderElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersconfigPackage.Literals.FOLDER_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.FOLDER_ELEMENT__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersconfigPackage.FOLDER_ELEMENT__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersconfigPackage.FOLDER_ELEMENT__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.FOLDER_ELEMENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.FOLDER_ELEMENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FolderElementImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderImpl.java
new file mode 100644
index 00000000000..c73406a7dc4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderImpl.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl#getFolderElements <em>Folder Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FolderImpl extends FolderElementImpl implements Folder {
+ /**
+ * The cached value of the '{@link #getFolderElements() <em>Folder Elements</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFolderElements()
+ * @generated
+ * @ordered
+ */
+ protected EList<FolderElement> folderElements;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FolderImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersconfigPackage.Literals.FOLDER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<FolderElement> getFolderElements() {
+ if (folderElements == null) {
+ folderElements = new EObjectContainmentEList<FolderElement>(FolderElement.class, this, LayersconfigPackage.FOLDER__FOLDER_ELEMENTS);
+ }
+ return folderElements;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+ return ((InternalEList<?>)getFolderElements()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+ return getFolderElements();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+ getFolderElements().clear();
+ getFolderElements().addAll((Collection<? extends FolderElement>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+ getFolderElements().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+ return folderElements != null && !folderElements.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //FolderImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/InstanciableElementImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/InstanciableElementImpl.java
new file mode 100644
index 00000000000..289de6dd60a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/InstanciableElementImpl.java
@@ -0,0 +1,386 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instanciable Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getClassname <em>Classname</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getBundleID <em>Bundle ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getDisplayName <em>Display Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getIconPath <em>Icon Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getClassnameKind <em>Classname Kind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class InstanciableElementImpl extends FolderElementImpl implements InstanciableElement {
+ /**
+ * The default value of the '{@link #getClassname() <em>Classname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassname()
+ * @generated
+ * @ordered
+ */
+ protected static final String CLASSNAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getClassname() <em>Classname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassname()
+ * @generated
+ * @ordered
+ */
+ protected String classname = CLASSNAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getBundleID() <em>Bundle ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBundleID()
+ * @generated
+ * @ordered
+ */
+ protected static final String BUNDLE_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getBundleID() <em>Bundle ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBundleID()
+ * @generated
+ * @ordered
+ */
+ protected String bundleID = BUNDLE_ID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDisplayName() <em>Display Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDisplayName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DISPLAY_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDisplayName() <em>Display Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDisplayName()
+ * @generated
+ * @ordered
+ */
+ protected String displayName = DISPLAY_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getIconPath() <em>Icon Path</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIconPath()
+ * @generated
+ * @ordered
+ */
+ protected static final String ICON_PATH_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIconPath() <em>Icon Path</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIconPath()
+ * @generated
+ * @ordered
+ */
+ protected String iconPath = ICON_PATH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getClassnameKind() <em>Classname Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassnameKind()
+ * @generated
+ * @ordered
+ */
+ protected static final ClassnameKind CLASSNAME_KIND_EDEFAULT = ClassnameKind.UNDEFINED;
+
+ /**
+ * The cached value of the '{@link #getClassnameKind() <em>Classname Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassnameKind()
+ * @generated
+ * @ordered
+ */
+ protected ClassnameKind classnameKind = CLASSNAME_KIND_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InstanciableElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getClassname() {
+ return classname;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setClassname(String newClassname) {
+ String oldClassname = classname;
+ classname = newClassname;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME, oldClassname, classname));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getBundleID() {
+ return bundleID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBundleID(String newBundleID) {
+ String oldBundleID = bundleID;
+ bundleID = newBundleID;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID, oldBundleID, bundleID));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDisplayName(String newDisplayName) {
+ String oldDisplayName = displayName;
+ displayName = newDisplayName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME, oldDisplayName, displayName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getIconPath() {
+ return iconPath;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIconPath(String newIconPath) {
+ String oldIconPath = iconPath;
+ iconPath = newIconPath;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH, oldIconPath, iconPath));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ClassnameKind getClassnameKind() {
+ return classnameKind;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setClassnameKind(ClassnameKind newClassnameKind) {
+ ClassnameKind oldClassnameKind = classnameKind;
+ classnameKind = newClassnameKind == null ? CLASSNAME_KIND_EDEFAULT : newClassnameKind;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND, oldClassnameKind, classnameKind));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+ return getClassname();
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+ return getBundleID();
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+ return getDisplayName();
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+ return getIconPath();
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+ return getClassnameKind();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+ setClassname((String)newValue);
+ return;
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+ setBundleID((String)newValue);
+ return;
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+ setDisplayName((String)newValue);
+ return;
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+ setIconPath((String)newValue);
+ return;
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+ setClassnameKind((ClassnameKind)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+ setClassname(CLASSNAME_EDEFAULT);
+ return;
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+ setBundleID(BUNDLE_ID_EDEFAULT);
+ return;
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+ setDisplayName(DISPLAY_NAME_EDEFAULT);
+ return;
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+ setIconPath(ICON_PATH_EDEFAULT);
+ return;
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+ setClassnameKind(CLASSNAME_KIND_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+ return CLASSNAME_EDEFAULT == null ? classname != null : !CLASSNAME_EDEFAULT.equals(classname);
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+ return BUNDLE_ID_EDEFAULT == null ? bundleID != null : !BUNDLE_ID_EDEFAULT.equals(bundleID);
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+ return DISPLAY_NAME_EDEFAULT == null ? displayName != null : !DISPLAY_NAME_EDEFAULT.equals(displayName);
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+ return ICON_PATH_EDEFAULT == null ? iconPath != null : !ICON_PATH_EDEFAULT.equals(iconPath);
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+ return classnameKind != CLASSNAME_KIND_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (classname: ");
+ result.append(classname);
+ result.append(", bundleID: ");
+ result.append(bundleID);
+ result.append(", displayName: ");
+ result.append(displayName);
+ result.append(", iconPath: ");
+ result.append(iconPath);
+ result.append(", classnameKind: ");
+ result.append(classnameKind);
+ result.append(')');
+ return result.toString();
+ }
+
+} //InstanciableElementImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImpl.java
new file mode 100644
index 00000000000..e965e4e6d77
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImpl.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator Config</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorConfigImpl extends InstanciableElementImpl implements LayerOperatorConfig {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorConfigImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersconfigPackage.Literals.LAYER_OPERATOR_CONFIG;
+ }
+
+ /**
+ * Create the requested descriptor
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#createLayersOperatorDescriptor()
+ *
+ * @return
+ * @throws NotFoundException
+ * @generated NOT
+ */
+ @Override
+ public LayerOperatorDescriptor createLayersOperatorDescriptor() throws InstanciationException {
+
+ // Create instance of layer
+ EClassifier classifier = LayersPackage.eINSTANCE.getEClassifier(getClassname());
+ if(classifier == null) {
+ throw new InstanciationException("Can't create LayerOperatorDescriptor for name '" + getClassname() + "'");
+ }
+ LayerOperatorDescriptor res = (LayerOperatorDescriptor)LayersFactory.eINSTANCE.create((EClass)classifier);
+
+ // Set values
+ res.setName(getName());
+
+ return res;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersconfigPackage.LAYER_OPERATOR_CONFIG___CREATE_LAYERS_OPERATOR_DESCRIPTOR:
+ try {
+ return createLayersOperatorDescriptor();
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+} //LayerOperatorConfigImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorMultipleBindingImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorMultipleBindingImpl.java
new file mode 100644
index 00000000000..1eade1a9073
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorMultipleBindingImpl.java
@@ -0,0 +1,233 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator Multiple Binding</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl#getLayerOperatorConfig <em>Layer Operator Config</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl#getBindings <em>Bindings</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorMultipleBindingImpl extends FolderElementImpl implements LayerOperatorMultipleBinding {
+ /**
+ * The cached value of the '{@link #getLayerOperatorConfig() <em>Layer Operator Config</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayerOperatorConfig()
+ * @generated
+ * @ordered
+ */
+ protected LayerOperatorConfig layerOperatorConfig;
+
+ /**
+ * The cached value of the '{@link #getBindings() <em>Bindings</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBindings()
+ * @generated
+ * @ordered
+ */
+ protected EList<OperatorBinding> bindings;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorMultipleBindingImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersconfigPackage.Literals.LAYER_OPERATOR_MULTIPLE_BINDING;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorConfig getLayerOperatorConfig() {
+ if (layerOperatorConfig != null && layerOperatorConfig.eIsProxy()) {
+ InternalEObject oldLayerOperatorConfig = (InternalEObject)layerOperatorConfig;
+ layerOperatorConfig = (LayerOperatorConfig)eResolveProxy(oldLayerOperatorConfig);
+ if (layerOperatorConfig != oldLayerOperatorConfig) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG, oldLayerOperatorConfig, layerOperatorConfig));
+ }
+ }
+ return layerOperatorConfig;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorConfig basicGetLayerOperatorConfig() {
+ return layerOperatorConfig;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLayerOperatorConfig(LayerOperatorConfig newLayerOperatorConfig) {
+ LayerOperatorConfig oldLayerOperatorConfig = layerOperatorConfig;
+ layerOperatorConfig = newLayerOperatorConfig;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG, oldLayerOperatorConfig, layerOperatorConfig));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<OperatorBinding> getBindings() {
+ if (bindings == null) {
+ bindings = new EObjectContainmentWithInverseEList<OperatorBinding>(OperatorBinding.class, this, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS, LayersconfigPackage.OPERATOR_BINDING__OWNER);
+ }
+ return bindings;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getBindings()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+ return ((InternalEList<?>)getBindings()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG:
+ if (resolve) return getLayerOperatorConfig();
+ return basicGetLayerOperatorConfig();
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+ return getBindings();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG:
+ setLayerOperatorConfig((LayerOperatorConfig)newValue);
+ return;
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+ getBindings().clear();
+ getBindings().addAll((Collection<? extends OperatorBinding>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG:
+ setLayerOperatorConfig((LayerOperatorConfig)null);
+ return;
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+ getBindings().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG:
+ return layerOperatorConfig != null;
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+ return bindings != null && !bindings.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //LayerOperatorMultipleBindingImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigFactoryImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigFactoryImpl.java
new file mode 100644
index 00000000000..7c5fd858d0d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigFactoryImpl.java
@@ -0,0 +1,313 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.*;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersconfigFactoryImpl extends EFactoryImpl implements LayersconfigFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static LayersconfigFactory init() {
+ try {
+ LayersconfigFactory theLayersconfigFactory = (LayersconfigFactory)EPackage.Registry.INSTANCE.getEFactory(LayersconfigPackage.eNS_URI);
+ if (theLayersconfigFactory != null) {
+ return theLayersconfigFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new LayersconfigFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case LayersconfigPackage.FOLDER: return createFolder();
+ case LayersconfigPackage.LAYER_OPERATOR_CONFIG: return createLayerOperatorConfig();
+ case LayersconfigPackage.OPERATOR_CONFIG: return createOperatorConfig();
+ case LayersconfigPackage.PROPERTY_ID: return createPropertyId();
+ case LayersconfigPackage.TYPE_CONFIG: return createTypeConfig();
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING: return createLayerOperatorMultipleBinding();
+ case LayersconfigPackage.OPERATOR_BINDING: return createOperatorBinding();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case LayersconfigPackage.CLASSNAME_KIND:
+ return createClassnameKindFromString(eDataType, initialValue);
+ case LayersconfigPackage.STRING:
+ return createStringFromString(eDataType, initialValue);
+ case LayersconfigPackage.INSTANCIATION_EXCEPTION:
+ return createInstanciationExceptionFromString(eDataType, initialValue);
+ case LayersconfigPackage.LAYER_OPERATOR_DESCRIPTOR:
+ return createLayerOperatorDescriptorFromString(eDataType, initialValue);
+ case LayersconfigPackage.PROPERTY_OPERATOR:
+ return createPropertyOperatorFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case LayersconfigPackage.CLASSNAME_KIND:
+ return convertClassnameKindToString(eDataType, instanceValue);
+ case LayersconfigPackage.STRING:
+ return convertStringToString(eDataType, instanceValue);
+ case LayersconfigPackage.INSTANCIATION_EXCEPTION:
+ return convertInstanciationExceptionToString(eDataType, instanceValue);
+ case LayersconfigPackage.LAYER_OPERATOR_DESCRIPTOR:
+ return convertLayerOperatorDescriptorToString(eDataType, instanceValue);
+ case LayersconfigPackage.PROPERTY_OPERATOR:
+ return convertPropertyOperatorToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Folder createFolder() {
+ FolderImpl folder = new FolderImpl();
+ return folder;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorConfig createLayerOperatorConfig() {
+ LayerOperatorConfigImpl layerOperatorConfig = new LayerOperatorConfigImpl();
+ return layerOperatorConfig;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperatorConfig createOperatorConfig() {
+ OperatorConfigImpl operatorConfig = new OperatorConfigImpl();
+ return operatorConfig;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyId createPropertyId() {
+ PropertyIdImpl propertyId = new PropertyIdImpl();
+ return propertyId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeConfig createTypeConfig() {
+ TypeConfigImpl typeConfig = new TypeConfigImpl();
+ return typeConfig;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorMultipleBinding createLayerOperatorMultipleBinding() {
+ LayerOperatorMultipleBindingImpl layerOperatorMultipleBinding = new LayerOperatorMultipleBindingImpl();
+ return layerOperatorMultipleBinding;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperatorBinding createOperatorBinding() {
+ OperatorBindingImpl operatorBinding = new OperatorBindingImpl();
+ return operatorBinding;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ClassnameKind createClassnameKindFromString(EDataType eDataType, String initialValue) {
+ ClassnameKind result = ClassnameKind.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertClassnameKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String createStringFromString(EDataType eDataType, String initialValue) {
+ return (String)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertStringToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstanciationException createInstanciationExceptionFromString(EDataType eDataType, String initialValue) {
+ return (InstanciationException)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertInstanciationExceptionToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptor createLayerOperatorDescriptorFromString(EDataType eDataType, String initialValue) {
+ return (LayerOperatorDescriptor)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertLayerOperatorDescriptorToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyOperator createPropertyOperatorFromString(EDataType eDataType, String initialValue) {
+ return (PropertyOperator)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertPropertyOperatorToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigPackage getLayersconfigPackage() {
+ return (LayersconfigPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static LayersconfigPackage getPackage() {
+ return LayersconfigPackage.eINSTANCE;
+ }
+
+} //LayersconfigFactoryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigPackageImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigPackageImpl.java
new file mode 100644
index 00000000000..5f1b5677ab1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigPackageImpl.java
@@ -0,0 +1,639 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersconfigPackageImpl extends EPackageImpl implements LayersconfigPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass folderEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass folderElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerOperatorConfigEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass instanciableElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass operatorConfigEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertyIdEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeConfigEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerOperatorMultipleBindingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass operatorBindingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum classnameKindEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType stringEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType instanciationExceptionEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType layerOperatorDescriptorEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType propertyOperatorEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private LayersconfigPackageImpl() {
+ super(eNS_URI, LayersconfigFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link LayersconfigPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static LayersconfigPackage init() {
+ if (isInited) return (LayersconfigPackage)EPackage.Registry.INSTANCE.getEPackage(LayersconfigPackage.eNS_URI);
+
+ // Obtain or create and register package
+ LayersconfigPackageImpl theLayersconfigPackage = (LayersconfigPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof LayersconfigPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new LayersconfigPackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theLayersconfigPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theLayersconfigPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theLayersconfigPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(LayersconfigPackage.eNS_URI, theLayersconfigPackage);
+ return theLayersconfigPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFolder() {
+ return folderEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFolder_FolderElements() {
+ return (EReference)folderEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFolderElement() {
+ return folderElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFolderElement_Name() {
+ return (EAttribute)folderElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerOperatorConfig() {
+ return layerOperatorConfigEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorConfig__CreateLayersOperatorDescriptor() {
+ return layerOperatorConfigEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInstanciableElement() {
+ return instanciableElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInstanciableElement_Classname() {
+ return (EAttribute)instanciableElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInstanciableElement_BundleID() {
+ return (EAttribute)instanciableElementEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInstanciableElement_DisplayName() {
+ return (EAttribute)instanciableElementEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInstanciableElement_IconPath() {
+ return (EAttribute)instanciableElementEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInstanciableElement_ClassnameKind() {
+ return (EAttribute)instanciableElementEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOperatorConfig() {
+ return operatorConfigEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getOperatorConfig__CreateOperatorDescriptor() {
+ return operatorConfigEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPropertyId() {
+ return propertyIdEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPropertyId_Type() {
+ return (EReference)propertyIdEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTypeConfig() {
+ return typeConfigEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerOperatorMultipleBinding() {
+ return layerOperatorMultipleBindingEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerOperatorMultipleBinding_LayerOperatorConfig() {
+ return (EReference)layerOperatorMultipleBindingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerOperatorMultipleBinding_Bindings() {
+ return (EReference)layerOperatorMultipleBindingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOperatorBinding() {
+ return operatorBindingEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperatorBinding_Operator() {
+ return (EReference)operatorBindingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperatorBinding_LayerOperatorConfig() {
+ return (EReference)operatorBindingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperatorBinding_PropertyId() {
+ return (EReference)operatorBindingEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperatorBinding_Owner() {
+ return (EReference)operatorBindingEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getClassnameKind() {
+ return classnameKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getString() {
+ return stringEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getInstanciationException() {
+ return instanciationExceptionEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getLayerOperatorDescriptor() {
+ return layerOperatorDescriptorEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getPropertyOperator() {
+ return propertyOperatorEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigFactory getLayersconfigFactory() {
+ return (LayersconfigFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ folderEClass = createEClass(FOLDER);
+ createEReference(folderEClass, FOLDER__FOLDER_ELEMENTS);
+
+ folderElementEClass = createEClass(FOLDER_ELEMENT);
+ createEAttribute(folderElementEClass, FOLDER_ELEMENT__NAME);
+
+ layerOperatorConfigEClass = createEClass(LAYER_OPERATOR_CONFIG);
+ createEOperation(layerOperatorConfigEClass, LAYER_OPERATOR_CONFIG___CREATE_LAYERS_OPERATOR_DESCRIPTOR);
+
+ instanciableElementEClass = createEClass(INSTANCIABLE_ELEMENT);
+ createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__CLASSNAME);
+ createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__BUNDLE_ID);
+ createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__DISPLAY_NAME);
+ createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__ICON_PATH);
+ createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__CLASSNAME_KIND);
+
+ operatorConfigEClass = createEClass(OPERATOR_CONFIG);
+ createEOperation(operatorConfigEClass, OPERATOR_CONFIG___CREATE_OPERATOR_DESCRIPTOR);
+
+ propertyIdEClass = createEClass(PROPERTY_ID);
+ createEReference(propertyIdEClass, PROPERTY_ID__TYPE);
+
+ typeConfigEClass = createEClass(TYPE_CONFIG);
+
+ layerOperatorMultipleBindingEClass = createEClass(LAYER_OPERATOR_MULTIPLE_BINDING);
+ createEReference(layerOperatorMultipleBindingEClass, LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG);
+ createEReference(layerOperatorMultipleBindingEClass, LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS);
+
+ operatorBindingEClass = createEClass(OPERATOR_BINDING);
+ createEReference(operatorBindingEClass, OPERATOR_BINDING__OPERATOR);
+ createEReference(operatorBindingEClass, OPERATOR_BINDING__LAYER_OPERATOR_CONFIG);
+ createEReference(operatorBindingEClass, OPERATOR_BINDING__PROPERTY_ID);
+ createEReference(operatorBindingEClass, OPERATOR_BINDING__OWNER);
+
+ // Create enums
+ classnameKindEEnum = createEEnum(CLASSNAME_KIND);
+
+ // Create data types
+ stringEDataType = createEDataType(STRING);
+ instanciationExceptionEDataType = createEDataType(INSTANCIATION_EXCEPTION);
+ layerOperatorDescriptorEDataType = createEDataType(LAYER_OPERATOR_DESCRIPTOR);
+ propertyOperatorEDataType = createEDataType(PROPERTY_OPERATOR);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ folderEClass.getESuperTypes().add(this.getFolderElement());
+ layerOperatorConfigEClass.getESuperTypes().add(this.getInstanciableElement());
+ instanciableElementEClass.getESuperTypes().add(this.getFolderElement());
+ operatorConfigEClass.getESuperTypes().add(this.getInstanciableElement());
+ propertyIdEClass.getESuperTypes().add(this.getFolderElement());
+ typeConfigEClass.getESuperTypes().add(this.getFolderElement());
+ layerOperatorMultipleBindingEClass.getESuperTypes().add(this.getFolderElement());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(folderEClass, Folder.class, "Folder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getFolder_FolderElements(), this.getFolderElement(), null, "folderElements", null, 0, -1, Folder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(folderElementEClass, FolderElement.class, "FolderElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFolderElement_Name(), this.getString(), "name", null, 1, 1, FolderElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(layerOperatorConfigEClass, LayerOperatorConfig.class, "LayerOperatorConfig", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ EOperation op = initEOperation(getLayerOperatorConfig__CreateLayersOperatorDescriptor(), this.getLayerOperatorDescriptor(), "createLayersOperatorDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getInstanciationException());
+
+ initEClass(instanciableElementEClass, InstanciableElement.class, "InstanciableElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getInstanciableElement_Classname(), this.getString(), "classname", null, 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getInstanciableElement_BundleID(), this.getString(), "bundleID", null, 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getInstanciableElement_DisplayName(), this.getString(), "displayName", null, 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getInstanciableElement_IconPath(), this.getString(), "iconPath", null, 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getInstanciableElement_ClassnameKind(), this.getClassnameKind(), "classnameKind", "UNDEFINED", 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(operatorConfigEClass, OperatorConfig.class, "OperatorConfig", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = initEOperation(getOperatorConfig__CreateOperatorDescriptor(), this.getPropertyOperator(), "createOperatorDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getInstanciationException());
+
+ initEClass(propertyIdEClass, PropertyId.class, "PropertyId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPropertyId_Type(), this.getTypeConfig(), null, "type", null, 1, 1, PropertyId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(typeConfigEClass, TypeConfig.class, "TypeConfig", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(layerOperatorMultipleBindingEClass, LayerOperatorMultipleBinding.class, "LayerOperatorMultipleBinding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayerOperatorMultipleBinding_LayerOperatorConfig(), this.getLayerOperatorConfig(), null, "layerOperatorConfig", null, 1, 1, LayerOperatorMultipleBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayerOperatorMultipleBinding_Bindings(), this.getOperatorBinding(), this.getOperatorBinding_Owner(), "bindings", null, 0, -1, LayerOperatorMultipleBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(operatorBindingEClass, OperatorBinding.class, "OperatorBinding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getOperatorBinding_Operator(), this.getOperatorConfig(), null, "operator", null, 1, 1, OperatorBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getOperatorBinding_LayerOperatorConfig(), this.getLayerOperatorConfig(), null, "layerOperatorConfig", null, 1, 1, OperatorBinding.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+ initEReference(getOperatorBinding_PropertyId(), this.getPropertyId(), null, "propertyId", null, 1, 1, OperatorBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getOperatorBinding_Owner(), this.getLayerOperatorMultipleBinding(), this.getLayerOperatorMultipleBinding_Bindings(), "owner", null, 1, 1, OperatorBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(classnameKindEEnum, ClassnameKind.class, "ClassnameKind");
+ addEEnumLiteral(classnameKindEEnum, ClassnameKind.UNDEFINED);
+ addEEnumLiteral(classnameKindEEnum, ClassnameKind.EMF_CLASSNAME);
+ addEEnumLiteral(classnameKindEEnum, ClassnameKind.POJO_CLASSNAME);
+ addEEnumLiteral(classnameKindEEnum, ClassnameKind.NOT_FOUND);
+
+ // Initialize data types
+ initEDataType(stringEDataType, String.class, "String", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(instanciationExceptionEDataType, InstanciationException.class, "InstanciationException", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(layerOperatorDescriptorEDataType, LayerOperatorDescriptor.class, "LayerOperatorDescriptor", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(propertyOperatorEDataType, PropertyOperator.class, "PropertyOperator", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //LayersconfigPackageImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorBindingImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorBindingImpl.java
new file mode 100644
index 00000000000..5fe6eb266f9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorBindingImpl.java
@@ -0,0 +1,355 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operator Binding</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl#getOperator <em>Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl#getLayerOperatorConfig <em>Layer Operator Config</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl#getPropertyId <em>Property Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl#getOwner <em>Owner</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class OperatorBindingImpl extends MinimalEObjectImpl.Container implements OperatorBinding {
+ /**
+ * The cached value of the '{@link #getOperator() <em>Operator</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperator()
+ * @generated
+ * @ordered
+ */
+ protected OperatorConfig operator;
+
+ /**
+ * The cached value of the '{@link #getPropertyId() <em>Property Id</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyId()
+ * @generated
+ * @ordered
+ */
+ protected PropertyId propertyId;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OperatorBindingImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersconfigPackage.Literals.OPERATOR_BINDING;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperatorConfig getOperator() {
+ if (operator != null && operator.eIsProxy()) {
+ InternalEObject oldOperator = (InternalEObject)operator;
+ operator = (OperatorConfig)eResolveProxy(oldOperator);
+ if (operator != oldOperator) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersconfigPackage.OPERATOR_BINDING__OPERATOR, oldOperator, operator));
+ }
+ }
+ return operator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperatorConfig basicGetOperator() {
+ return operator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOperator(OperatorConfig newOperator) {
+ OperatorConfig oldOperator = operator;
+ operator = newOperator;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.OPERATOR_BINDING__OPERATOR, oldOperator, operator));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorConfig getLayerOperatorConfig() {
+ LayerOperatorConfig layerOperatorConfig = basicGetLayerOperatorConfig();
+ return layerOperatorConfig != null && layerOperatorConfig.eIsProxy() ? (LayerOperatorConfig)eResolveProxy((InternalEObject)layerOperatorConfig) : layerOperatorConfig;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public LayerOperatorConfig basicGetLayerOperatorConfig() {
+ //
+ return getOwner().getLayerOperatorConfig();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyId getPropertyId() {
+ if (propertyId != null && propertyId.eIsProxy()) {
+ InternalEObject oldPropertyId = (InternalEObject)propertyId;
+ propertyId = (PropertyId)eResolveProxy(oldPropertyId);
+ if (propertyId != oldPropertyId) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID, oldPropertyId, propertyId));
+ }
+ }
+ return propertyId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyId basicGetPropertyId() {
+ return propertyId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPropertyId(PropertyId newPropertyId) {
+ PropertyId oldPropertyId = propertyId;
+ propertyId = newPropertyId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID, oldPropertyId, propertyId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorMultipleBinding getOwner() {
+ if (eContainerFeatureID() != LayersconfigPackage.OPERATOR_BINDING__OWNER) return null;
+ return (LayerOperatorMultipleBinding)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOwner(LayerOperatorMultipleBinding newOwner, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newOwner, LayersconfigPackage.OPERATOR_BINDING__OWNER, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOwner(LayerOperatorMultipleBinding newOwner) {
+ if (newOwner != eInternalContainer() || (eContainerFeatureID() != LayersconfigPackage.OPERATOR_BINDING__OWNER && newOwner != null)) {
+ if (EcoreUtil.isAncestor(this, newOwner))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newOwner != null)
+ msgs = ((InternalEObject)newOwner).eInverseAdd(this, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS, LayerOperatorMultipleBinding.class, msgs);
+ msgs = basicSetOwner(newOwner, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.OPERATOR_BINDING__OWNER, newOwner, newOwner));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetOwner((LayerOperatorMultipleBinding)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+ return basicSetOwner(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+ return eInternalContainer().eInverseRemove(this, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS, LayerOperatorMultipleBinding.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersconfigPackage.OPERATOR_BINDING__OPERATOR:
+ if (resolve) return getOperator();
+ return basicGetOperator();
+ case LayersconfigPackage.OPERATOR_BINDING__LAYER_OPERATOR_CONFIG:
+ if (resolve) return getLayerOperatorConfig();
+ return basicGetLayerOperatorConfig();
+ case LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID:
+ if (resolve) return getPropertyId();
+ return basicGetPropertyId();
+ case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+ return getOwner();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersconfigPackage.OPERATOR_BINDING__OPERATOR:
+ setOperator((OperatorConfig)newValue);
+ return;
+ case LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID:
+ setPropertyId((PropertyId)newValue);
+ return;
+ case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+ setOwner((LayerOperatorMultipleBinding)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.OPERATOR_BINDING__OPERATOR:
+ setOperator((OperatorConfig)null);
+ return;
+ case LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID:
+ setPropertyId((PropertyId)null);
+ return;
+ case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+ setOwner((LayerOperatorMultipleBinding)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.OPERATOR_BINDING__OPERATOR:
+ return operator != null;
+ case LayersconfigPackage.OPERATOR_BINDING__LAYER_OPERATOR_CONFIG:
+ return basicGetLayerOperatorConfig() != null;
+ case LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID:
+ return propertyId != null;
+ case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+ return getOwner() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //OperatorBindingImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImpl.java
new file mode 100644
index 00000000000..b6a34529632
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImpl.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceException;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operator Config</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class OperatorConfigImpl extends InstanciableElementImpl implements OperatorConfig {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OperatorConfigImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersconfigPackage.Literals.OPERATOR_CONFIG;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public PropertyOperator createOperatorDescriptor() throws InstanciationException {
+
+ switch(getClassnameKind()) {
+ case UNDEFINED:
+ // Try to find the exact type of classname
+ PropertyOperator res;
+
+ // Try as EMF instance
+ try {
+ res = createEmfInstance();
+ setClassnameKind(ClassnameKind.EMF_CLASSNAME);
+ return res;
+ } catch (InstanciationException e) {
+ // Not an EMF name. Try other solutions.
+ } catch (ClassCastException e) {
+ // specified class name is of wrong type
+ setClassnameKind(ClassnameKind.NOT_FOUND);
+ throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'. Bad EMF type.");
+ }
+
+ // Try as java pojo
+ try {
+ res = createPojoInstance();
+ setClassnameKind(ClassnameKind.POJO_CLASSNAME);
+ return res;
+ } catch (InstanciationException e) {
+ setClassnameKind(ClassnameKind.NOT_FOUND);
+ throw e;
+ }
+
+
+ case EMF_CLASSNAME:
+ return createEmfInstance();
+
+ case POJO_CLASSNAME:
+ // Try to load a java class
+ return createPojoInstance();
+
+
+ case NOT_FOUND:
+ // We already are in error. Do nothing
+
+ break;
+
+ default:
+ break;
+ }
+
+ throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'.");
+
+ }
+
+ /**
+ * @return
+ * @throws InstanciationException
+ */
+ protected PropertyOperator createPojoInstance() throws InstanciationException {
+ try {
+ Class<?> opClass = loadClass();
+ CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+ operator.setOperatorInstance((CustomPropertyOperatorsInstance)opClass.newInstance() );
+ operator.setName(getName());
+
+ return operator;
+ } catch (Exception e) {
+ setClassnameKind(ClassnameKind.NOT_FOUND);
+ throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'. " + e.getMessage());
+ }
+ }
+
+ /**
+ * Create an EMF instance from the classname.
+ * @return
+ * @throws InstanciationException
+ */
+ protected PropertyOperator createEmfInstance() throws InstanciationException {
+ // Try to load an EMF type
+ EClassifier classifier = LayersPackage.eINSTANCE.getEClassifier(getClassname());
+ if(classifier == null) {
+ throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'. Bad classname.");
+ }
+ PropertyOperator res;
+ try {
+ res = (PropertyOperator)LayersFactory.eINSTANCE.create((EClass)classifier);
+ } catch (ClassCastException e) {
+ // specified class name is of
+ throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'. Bad type.");
+ }
+ return res;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersconfigPackage.OPERATOR_CONFIG___CREATE_OPERATOR_DESCRIPTOR:
+ try {
+ return createOperatorDescriptor();
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * Load the Class object. Try from current ClassLoader, then try using the
+ * plugin referenced in the serviceDescriptor.PluginId
+ *
+ * @return
+ * @throws ServiceException
+ */
+ private Class<?> loadClass() throws LayersException {
+ String classname = getClassname();
+ Class<?> classDesc;
+ try {
+ classDesc = Class.forName(classname);
+ } catch (ClassNotFoundException e1) {
+ // Try using bundle
+ try {
+ String bundleID = getBundleID();
+ Bundle bundle = Platform.getBundle(bundleID);
+ classDesc = bundle.loadClass(classname);
+ } catch (ClassNotFoundException e2) {
+ throw new LayersException("Can't find class for the name '" + classname + "'.", e2);
+ } catch (NullPointerException e) {
+ throw new LayersException("Can't find bundle '"+ getBundleID()
+ + "' for class for the name '" + classname + "'.", e);
+ }
+ }
+
+ return classDesc;
+ }
+
+
+
+} //OperatorConfigImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/PropertyIdImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/PropertyIdImpl.java
new file mode 100644
index 00000000000..b216b972f05
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/PropertyIdImpl.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Id</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyIdImpl extends FolderElementImpl implements PropertyId {
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected TypeConfig type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyIdImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersconfigPackage.Literals.PROPERTY_ID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeConfig getType() {
+ if (type != null && type.eIsProxy()) {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (TypeConfig)eResolveProxy(oldType);
+ if (type != oldType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersconfigPackage.PROPERTY_ID__TYPE, oldType, type));
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeConfig basicGetType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(TypeConfig newType) {
+ TypeConfig oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.PROPERTY_ID__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersconfigPackage.PROPERTY_ID__TYPE:
+ if (resolve) return getType();
+ return basicGetType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersconfigPackage.PROPERTY_ID__TYPE:
+ setType((TypeConfig)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.PROPERTY_ID__TYPE:
+ setType((TypeConfig)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersconfigPackage.PROPERTY_ID__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //PropertyIdImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/TypeConfigImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/TypeConfigImpl.java
new file mode 100644
index 00000000000..451664f479d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/TypeConfigImpl.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Config</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeConfigImpl extends FolderElementImpl implements TypeConfig {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeConfigImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersconfigPackage.Literals.TYPE_CONFIG;
+ }
+
+} //TypeConfigImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigAdapterFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigAdapterFactory.java
new file mode 100644
index 00000000000..2ca38d8c5b9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigAdapterFactory.java
@@ -0,0 +1,274 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage
+ * @generated
+ */
+public class LayersconfigAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static LayersconfigPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = LayersconfigPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersconfigSwitch<Adapter> modelSwitch =
+ new LayersconfigSwitch<Adapter>() {
+ @Override
+ public Adapter caseFolder(Folder object) {
+ return createFolderAdapter();
+ }
+ @Override
+ public Adapter caseFolderElement(FolderElement object) {
+ return createFolderElementAdapter();
+ }
+ @Override
+ public Adapter caseLayerOperatorConfig(LayerOperatorConfig object) {
+ return createLayerOperatorConfigAdapter();
+ }
+ @Override
+ public Adapter caseInstanciableElement(InstanciableElement object) {
+ return createInstanciableElementAdapter();
+ }
+ @Override
+ public Adapter caseOperatorConfig(OperatorConfig object) {
+ return createOperatorConfigAdapter();
+ }
+ @Override
+ public Adapter casePropertyId(PropertyId object) {
+ return createPropertyIdAdapter();
+ }
+ @Override
+ public Adapter caseTypeConfig(TypeConfig object) {
+ return createTypeConfigAdapter();
+ }
+ @Override
+ public Adapter caseLayerOperatorMultipleBinding(LayerOperatorMultipleBinding object) {
+ return createLayerOperatorMultipleBindingAdapter();
+ }
+ @Override
+ public Adapter caseOperatorBinding(OperatorBinding object) {
+ return createOperatorBindingAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder <em>Folder</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.Folder
+ * @generated
+ */
+ public Adapter createFolderAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement <em>Folder Element</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement
+ * @generated
+ */
+ public Adapter createFolderElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig <em>Layer Operator Config</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig
+ * @generated
+ */
+ public Adapter createLayerOperatorConfigAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement <em>Instanciable Element</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement
+ * @generated
+ */
+ public Adapter createInstanciableElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig <em>Operator Config</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig
+ * @generated
+ */
+ public Adapter createOperatorConfigAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId <em>Property Id</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId
+ * @generated
+ */
+ public Adapter createPropertyIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig <em>Type Config</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig
+ * @generated
+ */
+ public Adapter createTypeConfigAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding <em>Layer Operator Multiple Binding</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding
+ * @generated
+ */
+ public Adapter createLayerOperatorMultipleBindingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding <em>Operator Binding</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding
+ * @generated
+ */
+ public Adapter createOperatorBindingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //LayersconfigAdapterFactory
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigSwitch.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigSwitch.java
new file mode 100644
index 00000000000..d7f242a3740
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigSwitch.java
@@ -0,0 +1,297 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage
+ * @generated
+ */
+public class LayersconfigSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static LayersconfigPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersconfigSwitch() {
+ if (modelPackage == null) {
+ modelPackage = LayersconfigPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case LayersconfigPackage.FOLDER: {
+ Folder folder = (Folder)theEObject;
+ T result = caseFolder(folder);
+ if (result == null) result = caseFolderElement(folder);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersconfigPackage.FOLDER_ELEMENT: {
+ FolderElement folderElement = (FolderElement)theEObject;
+ T result = caseFolderElement(folderElement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersconfigPackage.LAYER_OPERATOR_CONFIG: {
+ LayerOperatorConfig layerOperatorConfig = (LayerOperatorConfig)theEObject;
+ T result = caseLayerOperatorConfig(layerOperatorConfig);
+ if (result == null) result = caseInstanciableElement(layerOperatorConfig);
+ if (result == null) result = caseFolderElement(layerOperatorConfig);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersconfigPackage.INSTANCIABLE_ELEMENT: {
+ InstanciableElement instanciableElement = (InstanciableElement)theEObject;
+ T result = caseInstanciableElement(instanciableElement);
+ if (result == null) result = caseFolderElement(instanciableElement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersconfigPackage.OPERATOR_CONFIG: {
+ OperatorConfig operatorConfig = (OperatorConfig)theEObject;
+ T result = caseOperatorConfig(operatorConfig);
+ if (result == null) result = caseInstanciableElement(operatorConfig);
+ if (result == null) result = caseFolderElement(operatorConfig);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersconfigPackage.PROPERTY_ID: {
+ PropertyId propertyId = (PropertyId)theEObject;
+ T result = casePropertyId(propertyId);
+ if (result == null) result = caseFolderElement(propertyId);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersconfigPackage.TYPE_CONFIG: {
+ TypeConfig typeConfig = (TypeConfig)theEObject;
+ T result = caseTypeConfig(typeConfig);
+ if (result == null) result = caseFolderElement(typeConfig);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING: {
+ LayerOperatorMultipleBinding layerOperatorMultipleBinding = (LayerOperatorMultipleBinding)theEObject;
+ T result = caseLayerOperatorMultipleBinding(layerOperatorMultipleBinding);
+ if (result == null) result = caseFolderElement(layerOperatorMultipleBinding);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersconfigPackage.OPERATOR_BINDING: {
+ OperatorBinding operatorBinding = (OperatorBinding)theEObject;
+ T result = caseOperatorBinding(operatorBinding);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Folder</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Folder</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFolder(Folder object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Folder Element</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Folder Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFolderElement(FolderElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Operator Config</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Operator Config</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerOperatorConfig(LayerOperatorConfig object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Instanciable Element</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Instanciable Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInstanciableElement(InstanciableElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Operator Config</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Operator Config</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOperatorConfig(OperatorConfig object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Property Id</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Property Id</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePropertyId(PropertyId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Type Config</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Type Config</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTypeConfig(TypeConfig object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Operator Multiple Binding</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Operator Multiple Binding</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerOperatorMultipleBinding(LayerOperatorMultipleBinding object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Operator Binding</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Operator Binding</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOperatorBinding(OperatorBinding object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //LayersconfigSwitch
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/BadStateException.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/BadStateException.java
new file mode 100644
index 00000000000..00491cd3eaf
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/BadStateException.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BadStateException extends LayersException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -5674451388263111557L;
+
+ /**
+ * Constructor.
+ *
+ */
+ public BadStateException() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message
+ */
+ public BadStateException(String message) {
+ super(message);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param cause
+ */
+ public BadStateException(Throwable cause) {
+ super(cause);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message
+ * @param cause
+ */
+ public BadStateException(String message, Throwable cause) {
+ super(message, cause);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/InstanciationException.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/InstanciationException.java
new file mode 100644
index 00000000000..4f962b7af63
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/InstanciationException.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class InstanciationException extends LayersException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2070317356365033045L;
+
+ /**
+ * Constructor.
+ *
+ */
+ public InstanciationException() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message
+ */
+ public InstanciationException(String message) {
+ super(message);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param cause
+ */
+ public InstanciationException(Throwable cause) {
+ super(cause);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message
+ * @param cause
+ */
+ public InstanciationException(String message, Throwable cause) {
+ super(message, cause);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/LayersException.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/LayersException.java
new file mode 100644
index 00000000000..d33db09b172
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/LayersException.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Constructor.
+ *
+ */
+ public LayersException() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message
+ */
+ public LayersException(String message) {
+ super(message);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param cause
+ */
+ public LayersException(Throwable cause) {
+ super(cause);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message
+ * @param cause
+ */
+ public LayersException(String message, Throwable cause) {
+ super(message, cause);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message
+ * @param cause
+ * @param enableSuppression
+ * @param writableStackTrace
+ */
+// public LayersException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+// super(message, cause, enableSuppression, writableStackTrace);
+// // TODO Auto-generated constructor stub
+// }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/NotFoundException.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/NotFoundException.java
new file mode 100644
index 00000000000..b0ff797a2f0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/NotFoundException.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class NotFoundException extends LayersException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2070317356365033045L;
+
+ /**
+ * Constructor.
+ *
+ */
+ public NotFoundException() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message
+ */
+ public NotFoundException(String message) {
+ super(message);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param cause
+ */
+ public NotFoundException(Throwable cause) {
+ super(cause);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message
+ * @param cause
+ */
+ public NotFoundException(String message, Throwable cause) {
+ super(message, cause);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactory.java
new file mode 100644
index 00000000000..d297623f08e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactory.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.osgi.framework.Bundle;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class PropertyValueFactory {
+
+ /**
+ * Constructor.
+ *
+ */
+ public PropertyValueFactory() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Create an instance of the specified class, located in the specified plugin.
+ *
+ * @param pluginId
+ * @param classname
+ * @return
+ * @throws ClassNotFoundException
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ */
+ public Object newInstance(String pluginId, String classname) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+
+
+ Class<?> classType = loadClass(pluginId, classname);
+
+ return classType.newInstance();
+ }
+
+ /**
+ * Load requested class from the current classloader. If not found, try to get it from the
+ * specified plugin.
+ * @param declaringID
+ * @param className
+ * @return
+ * @throws ClassNotFoundException
+ */
+ public Class<?> loadClass(String declaringID, String className) throws ClassNotFoundException {
+ Class<?> factoryClass;
+ try {
+ factoryClass = Class.forName(className);
+ } catch (ClassNotFoundException e) {
+ // try another way
+ try {
+ Bundle bundle = Platform.getBundle(declaringID);
+ factoryClass = bundle.loadClass(className);
+ } catch (ClassNotFoundException e1) {
+ throw new ClassNotFoundException("Can't find class " + className
+ + "in plugin " + declaringID
+ , e1);
+ } catch (NullPointerException e1) {
+ throw new ClassNotFoundException("Can't find plugin " + declaringID, e1);
+}
+ }
+ return factoryClass;
+
+ }
+
+ /**
+ * Create an instance of the specified model concept.
+ * @param nsURI
+ * @param propertyName
+ * @return
+ * @throws ClassNotFoundException
+ * @throws InstantiationException
+ * @throws IllegalAccessException
+ */
+ public EObject newEClassInstance(String nsURI, String propertyName) throws ClassNotFoundException {
+
+
+
+ EPackage modelPackage = EPackage.Registry.INSTANCE.getEPackage(nsURI);
+ if( modelPackage == null) {
+ throw new ClassNotFoundException("Can't get EPAckage for model '" + nsURI + "'");
+ }
+
+ EClass classifier = (EClass)modelPackage.getEClassifier(propertyName);
+ if( classifier == null) {
+ throw new ClassNotFoundException("Can't get classifier '" + propertyName + "' in model '" + nsURI + "'");
+ }
+
+ return modelPackage.getEFactoryInstance().create(classifier);
+ }
+
+ public Object getEObjectPropertyValue(EObject eObject, String propertyName) {
+ return eObject.eGet(eObject.eClass().getEStructuralFeature(propertyName));
+ }
+
+ public void setEObjectPropertyValue(EObject eObject, String propertyName, Object value) {
+ eObject.eSet(eObject.eClass().getEStructuralFeature(propertyName), value);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/command/ComputePropertyValueCommand.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/command/ComputePropertyValueCommand.java
new file mode 100644
index 00000000000..3f8a5d3082b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/command/ComputePropertyValueCommand.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.command;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+
+/**
+ * This command is used to compute a property value in {@link LayersStack}.
+ * The effective computation is done when the {@link #getValue()} method is called.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ComputePropertyValueCommand {
+
+
+ /**
+ * Execute the command and return the computed value.
+ * Compute the value of the Property, and return it.
+ * @return The computed value of the Property.
+ * @throws LayersException If something goes wrong
+ */
+ public TypeInstance getCmdValue() throws LayersException;
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java
new file mode 100644
index 00000000000..8274b285d33
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java
@@ -0,0 +1,410 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.query.conditions.eobjects.EObjectCondition;
+import org.eclipse.emf.query.ocl.conditions.BooleanOCLCondition;
+import org.eclipse.emf.query.statements.FROM;
+import org.eclipse.emf.query.statements.IQueryResult;
+import org.eclipse.emf.query.statements.SELECT;
+import org.eclipse.emf.query.statements.WHERE;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.ocl.ParserException;
+import org.eclipse.ocl.ecore.OCL;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.util.Collections3;
+import org.eclipse.papyrus.layers.stackmodel.util.ObservableListView;
+
+/**
+ * This class evaluate its associated expression against the associated models.
+ * It provide a list of elements matching the expression in the model.
+ * The list of matching elements is synchronized by the matcher. The list can be provided at construction
+ * time. The ExpressinMatcher takes care to minimize the number of write to the underlying list of matching elements.
+ * Usually, there is two writes (see {@link Collections3#resetListTo(Collection, Collection)}.
+ * <br>
+ * It is possible to be inform of changes in the underlying list by wrapping it in an {@link ObservableListView}.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class ExpressionMatcher implements IValueChangedEventListener {
+
+ protected String expression="";
+
+ /**
+ * List of element matching the expression.
+ * This class maintains the list.
+ */
+ protected List<View> matchingElements;
+
+ /**
+ * List of element used as starting point for search.
+ */
+ protected List<EObject> searchRoots;
+
+ /**
+ * OCL Condition computed from the expr.
+ */
+ protected EObjectCondition condition;
+ protected OCL ocl;
+
+
+ /**
+ *
+ * Constructor.
+ *
+ */
+ public ExpressionMatcher() {
+ this.expression = "";
+ this.searchRoots = Collections.emptyList();
+ // init matchingElements
+ matchingElements = new ArrayList<View>();
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param searchRoots
+ * @throws LayersException
+ */
+ public ExpressionMatcher(List<View> matchingElementsList) {
+ this.expression = "";
+ this.searchRoots = Collections.emptyList();
+ // init matchingElements
+ matchingElements = matchingElementsList;
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param searchRoots
+ * @throws LayersException
+ */
+// public ExpressionMatcher(List<EObject> searchRoots) {
+// this.expression = "";
+// setSearchRoots(searchRoots);
+// // init matchingElements
+// matchingElements = new ObservableListView<View>(new ArrayList<View>());
+// }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param searchRoot
+ * @throws LayersException
+ */
+ public ExpressionMatcher(EObject searchRoot) {
+ this.expression = "";
+ setSearchRoots(Collections.singletonList(searchRoot));
+ // init matchingElements
+ matchingElements = new ArrayList<View>();
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param expression
+ * @param searchRoots
+ * @throws LayersException If the Condition can't be computed from the expression.
+ */
+ public ExpressionMatcher(String expression, List<EObject> searchRoots) throws LayersException {
+ this.searchRoots = searchRoots;
+ matchingElements = new ArrayList<View>();
+
+ // compute expr
+ setExpression(expression);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param expression
+ * @param searchRoots
+ * @throws LayersException If the Condition can't be computed from the expression.
+ */
+ public ExpressionMatcher(String expression, List<View> matchingElementsList, List<EObject> searchRoots) throws LayersException {
+ this.searchRoots = searchRoots;
+ matchingElements = matchingElementsList;
+
+ // compute expr
+ setExpression(expression);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param expression
+ * @param searchRoots
+ * @throws LayersException If the Condition can't be computed from the expression.
+ */
+ public ExpressionMatcher(String expression, EObject searchRoot) throws LayersException {
+ this(expression, Collections.singletonList(searchRoot));
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param expression
+ * @param searchRoots
+ * @throws LayersException If the Condition can't be computed from the expression.
+ */
+ public ExpressionMatcher(String expression, List<View> matchingElementsList, EObject searchRoot) throws LayersException {
+ this(expression, matchingElementsList, Collections.singletonList(searchRoot));
+ }
+
+ /**
+ * Compute the condition from the expr.
+ */
+ private void computeCondition() throws LayersException {
+ // silently fails if the expr is not set.
+ if( getExpression() == null || getExpression().length() == 0) {
+ return;
+ }
+
+ if( ocl == null) {
+ ocl = OCL.newInstance();
+ }
+ // Create the condition
+ try {
+ // If the 3rd args is null, this is a context free condition.
+
+ condition = new BooleanOCLCondition<EClassifier, EClass, EObject>(
+ ocl.getEnvironment(),
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+// "self.oclAsType(Shape).visible = true",
+ getExpression(),
+ NotationPackage.Literals.VIEW
+// null
+ );
+ } catch (ParserException e) {
+ // TODO Auto-generated catch block
+ condition = null;
+ throw new LayersException("Can't parse expression : " + e.getMessage(), e);
+ }
+
+ }
+
+ /**
+ * Recompute the matching elements.
+ * This lead to firing Events (added and removed)
+ */
+ public void refreshMatchingElements() {
+
+
+ if( condition == null) {
+ // If the condition is not set, the list should be empty
+ if( !getMatchingElements().isEmpty()) {
+ resetMatchingElements( Collections.EMPTY_LIST);
+ }
+ return;
+ }
+
+ // Create the OCL statement
+ SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+ new FROM(getSearchRoots()), new WHERE(condition),
+ new NullProgressMonitor());
+
+ // Execute the OCL statement
+ IQueryResult results = statement.execute();
+
+ /**
+ * Reset the matching elements with the new result.
+ */
+ resetMatchingElements( results);
+ }
+
+ /**
+ * Reset the {@link #matchingElements} and let it contain the specified collection.
+ * This fire added and removed events.
+ *
+ * @param results
+ */
+ @SuppressWarnings("unchecked")
+ private void resetMatchingElements(Collection<?> newElements) {
+
+ Collections3.resetListTo(matchingElements, (Collection<View>)newElements);
+// matchingElements.resetTo((Collection<View>)newElements);
+
+// // Compute views to add
+// // This are views in the newElements, but not in the actual list of matchingElement
+// // viewsToAdd = results - getViews()
+// List<View> viewsToAdd = new ArrayList<View>();
+// for( Object o : newElements ) {
+// View v = (View)o;
+// if( !getMatchingElements().contains(v)) {
+// viewsToAdd.add(v);
+// }
+// }
+//
+// // Compute views to remove
+// // Their is two ways to compute it:
+// // - viewsToremove = diagramViews - results
+// // - or viewsToremove = getViews() - result
+// // Use the cheaper one.
+// // The computed viewsToRemove list contains also views that are not in the layer,
+// // But this is cheaper than checking for the existence.
+//
+//// List<View> viewsToRemove = new ArrayList<View>();
+//// for( View v : (views.size()<getViews().size()?views:getViews()) ) {
+//// if( !results.contains(v)) {
+//// viewsToRemove.add(v);
+//// }
+//// }
+//
+// // Do operations
+// getMatchingElements().retainAll(newElements);
+//// getViews().removeAll(viewsToRemove);
+// getMatchingElements().addAll(viewsToAdd);
+
+ }
+
+ /**
+ * @return the expression
+ */
+ public String getExpression() {
+ return expression;
+ }
+
+
+ /**
+ * @param expression the expression to set
+ * @throws LayersException If the Condition can't be computed from the expression.
+ */
+ public void setExpression(String expression) throws LayersException {
+
+ if( expression == null || expression.length() == 0 ) {
+ // standardize noop expr
+ expression = "";
+ }
+ if( expression.equals(this.expression)) {
+ return;
+ }
+
+ this.expression = expression;
+
+ computeCondition();
+ refreshMatchingElements();
+ }
+
+
+ /**
+ * @return the matchingElements
+ */
+ public List<View> getMatchingElements() {
+ return matchingElements;
+ }
+
+
+ /**
+ * @return the searchRoots
+ */
+ public List<EObject> getSearchRoots() {
+ return searchRoots;
+ }
+
+ /**
+ *
+ * @param searchRoots
+ */
+ public void setSearchRoots(List<EObject> searchRoots) {
+
+ // Remove any existing observers
+ removeSearchRootsObservers();
+
+ if( searchRoots == null) {
+ searchRoots = Collections.emptyList();
+ }
+ this.searchRoots = searchRoots;
+ // add observers on roots changes
+ addSearchRootsObservers();
+
+ // Do not refresh. Let user do it.
+ }
+
+ /**
+ *
+ * @param searchRoots
+ */
+ public void setSearchRoots(EObject searchRoot) {
+ if( searchRoot == null) {
+ // Remove any existing observers
+ removeSearchRootsObservers();
+ searchRoots = Collections.emptyList();
+ return;
+ }
+
+ setSearchRoots( Collections.singletonList(searchRoot) );
+ }
+
+ /**
+ * Observes all searchRoots for changes. If a change occurs, refresh the matching elements.
+ *
+ */
+ protected void addSearchRootsObservers() {
+
+ if( searchRoots == null) {
+ return;
+ }
+
+
+ for( EObject root : searchRoots) {
+ ValueChangedEventNotifier notifier = ValueChangedEventNotifierFactory.instance.adapt(root);
+ notifier.addEventListener(this);
+ }
+ }
+
+ /**
+ * Observes all searchRoots for changes. If a change occurs, refresh the matching elements.
+ *
+ */
+ protected void removeSearchRootsObservers() {
+
+ if( searchRoots == null) {
+ return;
+ }
+
+ for( EObject root : searchRoots) {
+ ValueChangedEventNotifier notifier = ValueChangedEventNotifierFactory.instance.adapt(root);
+ notifier.removeEventListener(this);
+ }
+ }
+
+ /**
+ * Called when a value change in one of the elements of the observed roots.
+ * @param msg
+ */
+ @Override
+ public void valueChanged(Notification msg) {
+ refreshMatchingElements();
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/IValueChangedEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/IValueChangedEventListener.java
new file mode 100644
index 00000000000..e86f28addbe
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/IValueChangedEventListener.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+
+
+/**
+ * Class implementing this interface can listen to event from EObject.
+ * This class is used by {@link ExpressionMatcher} to be informed when it need to be refreshed.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface IValueChangedEventListener {
+
+ /**
+ * Called by events when a property is changed in a {@link EObject}
+ *
+ * @param msg
+ */
+ public void valueChanged(Notification msg) ;
+
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifier.java
new file mode 100644
index 00000000000..adf6abe1cd3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifier.java
@@ -0,0 +1,326 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.notifier.LayersTreeEventNotifier;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.UMLPackage;
+
+
+/**
+ * An EMF {@link Adapter} listening on uml::NamedElement properties changes.
+ *
+ * This class listen to a {@link NamedElement} and send following events to listeners:
+ * <ul>
+ * <li>valueChanged</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class ValueChangedEventNotifier extends EContentAdapter {
+
+ boolean isDisposed = false;
+
+ /**
+ * List of listener to notify.
+ */
+ protected List<IValueChangedEventListener> listeners = new ArrayList<IValueChangedEventListener>();
+
+ /**
+ * Something happen on the tree of object
+ * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ public void notifyChanged(Notification notification) {
+
+ // Self atttach
+ super.notifyChanged(notification);
+
+ // Take into account the domain hierarchy found from the notation.
+
+ // Now, filter
+ if( isDiagramRootView(notification)) {
+ fireValueChangedEvent(notification);
+ }
+ else if ( isUmlDomainElementChanged(notification)) {
+ fireValueChangedEvent(notification);
+ }
+
+
+// // We are only interested in NamedElement (from newValue if set, or oldValue if removed)
+// Object newValue = notification.getNewValue();
+// if( ! (newValue instanceof NamedElement || notification.getOldValue() instanceof NamedElement ) ) {
+// return;
+// }
+// // Check diagram modification
+// // There is 4 sources: View::persistedChildren and View::transientChildren
+// // Diagram::persistedChildren and Diagram::transientChildren
+// Object feature = notification.getFeature();
+// if( feature == UMLPackage.eINSTANCE.getNamedElement()
+// || feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+// || feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+// || feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges() ) {
+// // LayerOperator::layers || LayersStack::layers
+// // check the event type.
+// switch(notification.getEventType()) {
+// case Notification.SET:
+//
+// break;
+// case Notification.ADD:
+// // A view is added
+// fireValueChangedEvent(notification);
+// break;
+// case Notification.REMOVE:
+// // A layer is removed
+// fireDiagramViewRemovedEvent(notification);
+// break;
+// }
+// }
+
+ };
+
+ /**
+ * Return true if the notification indicates a change in a uml element.
+ * @param notification
+ * @return
+ */
+ private boolean isUmlDomainElementChanged(Notification notification) {
+ // Notifier should be the diagram
+ if( ! (notification.getNotifier() instanceof NamedElement) ) {
+ return false;
+ }
+
+ Object feature = notification.getFeature();
+
+ if( feature == UMLPackage.eINSTANCE.getNamedElement_Name() ) {
+ // check the event type.
+ switch(notification.getEventType()) {
+ case Notification.SET:
+ case Notification.ADD:
+ case Notification.REMOVE:
+
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return true if the notification indicates that a Diagram root view is modifified.
+ * @param notification
+ * @return
+ */
+ private boolean isDiagramRootView(Notification notification) {
+
+ // Notifier should be the diagram
+ if( ! (notification.getNotifier() instanceof Diagram) ) {
+ return false;
+ }
+
+ Object feature = notification.getFeature();
+
+ if( feature == NotationPackage.eINSTANCE.getView_PersistedChildren()
+ || feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+ || feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+ || feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges() ) {
+ // LayerOperator::layers || LayersStack::layers
+ // check the event type.
+ switch(notification.getEventType()) {
+ case Notification.SET:
+ case Notification.ADD:
+ case Notification.REMOVE:
+
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * This Adapter is for {@link LayersTreeEventNotifier}.
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
+ *
+ * @param type
+ * @return
+ */
+ @Override
+ public boolean isAdapterForType(Object type) {
+ return type == ValueChangedEventNotifier.class;
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ */
+ public ValueChangedEventNotifier() {
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ public void dispose() {
+
+ if(isDisposed()) {
+ return;
+ }
+
+ isDisposed = true;
+ listeners.clear();
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ public boolean isDisposed() {
+ return isDisposed == true;
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addEventListener(IValueChangedEventListener listener) {
+
+ if(listener == null ) {
+ return;
+ }
+
+ // Check if exist
+ if( listeners.contains(listener)) {
+ return;
+ }
+
+ listeners.add(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeEventListener(IValueChangedEventListener listener) {
+
+ listeners.remove(listener);
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ protected void fireValueChangedEvent(Notification msg) {
+ for(IValueChangedEventListener listener : listeners) {
+ listener.valueChanged(msg);
+ }
+ }
+
+ /**
+ * Handle View::element hierarchy in the self adapt mechanism.
+ * Handles a notification by calling {@link #handleContainment handleContainment}
+ * for any containment-based notification.
+ */
+ @Override
+ protected void selfAdapt(Notification notification)
+ {
+ System.err.println( this.getClass().getSimpleName() + ".selfAdapt("+ notification+")" );
+ // Handle the View::element tree
+ if (notification.getFeature() == NotationPackage.eINSTANCE.getView_Element())
+ {
+ handleContainment(notification);
+ }
+ else {
+ super.selfAdapt(notification);
+ }
+ }
+
+ /**
+ * Handle View::element hierarchy in the self adapt mechanism.
+ * @see org.eclipse.emf.ecore.util.EContentAdapter#setTarget(org.eclipse.emf.ecore.EObject)
+ *
+ * @param target
+ */
+ @Override
+ protected void setTarget(EObject target) {
+ System.err.println( this.getClass().getSimpleName() + ".setTarget("+ target+")" );
+ super.setTarget(target);
+ // Handle the View::element tree
+ if( target instanceof View ) {
+ EObject extraTarget = ((View)target).getElement();
+ if( extraTarget != null) {
+ System.err.println( this.getClass().getSimpleName() + ".setExtraTarget("+ extraTarget+")" );
+ // copied from org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EObject)
+// basicSetTarget(target);
+ // Add the extra object
+ addAdapter(extraTarget);
+ // Add the content of the extra object
+// for (Iterator<? extends Notifier> i = resolve() ?
+// extraTarget.eContents().iterator() :
+// ((InternalEList<? extends Notifier>)extraTarget.eContents()).basicIterator();
+// i.hasNext(); )
+// {
+// Notifier notifier = i.next();
+// addAdapter(notifier);
+// }
+
+ }
+ }
+ }
+
+ /**
+ * Handle View::element hierarchy in the self adapt mechanism.
+ * @see org.eclipse.emf.ecore.util.EContentAdapter#unsetTarget(org.eclipse.emf.ecore.EObject)
+ *
+ * @param target
+ */
+ @Override
+ protected void unsetTarget(EObject target) {
+ // TODO Auto-generated method stub
+ super.unsetTarget(target);
+ // Handle the View::element tree
+ if( target instanceof View ) {
+ EObject extraTarget = ((View)target).getElement();
+ if( extraTarget != null) {
+ // copied from org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EObject)
+// basicSetTarget(target);
+ // Remove the extra object
+ removeAdapter(extraTarget);
+ // Remove contents of the extra object
+// for (Iterator<? extends Notifier> i = resolve() ?
+// extraTarget.eContents().iterator() :
+// ((InternalEList<? extends Notifier>)extraTarget.eContents()).basicIterator();
+// i.hasNext(); )
+// {
+// Notifier notifier = i.next();
+// removeAdapter(notifier);
+// }
+
+ }
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactory.java
new file mode 100644
index 00000000000..e0f85d0b97f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactory.java
@@ -0,0 +1,68 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Factory used to create a {@link ValueChangedEventNotifier}.
+ * The factory ensures that there is only one Notifier for a given {@link LayersStack}.
+ * @author cedric dumoulin
+ *
+ */
+public class ValueChangedEventNotifierFactory extends AdapterFactoryImpl {
+
+ /**
+ * Global factory.
+ */
+ static public ValueChangedEventNotifierFactory instance = new ValueChangedEventNotifierFactory();
+
+ /**
+ * Convenience method.
+ * @param target
+ * @return
+ */
+ public ValueChangedEventNotifier adapt(Notifier target) {
+ return (ValueChangedEventNotifier)adapt(target, ValueChangedEventNotifier.class);
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#createAdapter(org.eclipse.emf.common.notify.Notifier)
+ *
+ * @param target
+ * @return
+ */
+ @Override
+ protected Adapter createAdapter(Notifier target) {
+ return new ValueChangedEventNotifier();
+ }
+
+ /**
+ * This Factory is for {@link ValueChangedEventNotifier}.
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#isFactoryForType(java.lang.Object)
+ *
+ * @param type
+ * @return
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return type == ValueChangedEventNotifier.class;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayer.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayer.java
new file mode 100644
index 00000000000..0198da947bb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayer.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValues <em>Property Values</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValueMap <em>Property Value Map</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getLayerDescriptor <em>Layer Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getViews <em>Views</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties <em>Attached Properties</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractLayer extends LayerExpression {
+ /**
+ * Returns the value of the '<em><b>Property Values</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Values</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Values</em>' reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_PropertyValues()
+ * @model
+ * @generated
+ */
+ EList<TypeInstance> getPropertyValues();
+
+ /**
+ * Returns the value of the '<em><b>Property Value Map</b></em>' map.
+ * The key is of type {@link java.lang.String},
+ * and the value is of type {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance},
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Value Map</em>' map isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Value Map</em>' map.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_PropertyValueMap()
+ * @model mapType="org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap<org.eclipse.papyrus.layers.stackmodel.layers.String, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance>" ordered="false"
+ * @generated
+ */
+ EMap<String, TypeInstance> getPropertyValueMap();
+
+ /**
+ * Returns the value of the '<em><b>Layer Descriptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Descriptor</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Descriptor</em>' reference.
+ * @see #setLayerDescriptor(LayerDescriptor)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_LayerDescriptor()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ LayerDescriptor getLayerDescriptor();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getLayerDescriptor <em>Layer Descriptor</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layer Descriptor</em>' reference.
+ * @see #getLayerDescriptor()
+ * @generated
+ */
+ void setLayerDescriptor(LayerDescriptor value);
+
+ /**
+ * Returns the value of the '<em><b>Views</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.gmf.runtime.notation.View}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Views</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Views</em>' reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_Views()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<View> getViews();
+
+ /**
+ * Returns the value of the '<em><b>Attached Properties</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.Property}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Attached Properties</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Attached Properties</em>' reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_AttachedProperties()
+ * @model transient="true" volatile="true" derived="true" ordered="false"
+ * @generated
+ */
+ EList<Property> getAttachedProperties();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ TypeInstance addPropertyInstance(Property property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ void removePropertyInstance(Property property);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ TypeInstance getPropertyInstance(Property property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" propertyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ TypeInstance getPropertyInstance(String property) throws LayersException;
+
+} // AbstractLayer
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayerOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayerOperator.java
new file mode 100644
index 00000000000..bb0fa68e3f9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayerOperator.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptor <em>Layer Operator Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptorName <em>Layer Operator Descriptor Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayerOperator()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractLayerOperator extends LayerOperator {
+
+ /**
+ * Returns the value of the '<em><b>Layer Operator Descriptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Operator Descriptor</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Operator Descriptor</em>' reference.
+ * @see #setLayerOperatorDescriptor(LayerOperatorDescriptor)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayerOperator_LayerOperatorDescriptor()
+ * @model required="true" transient="true" ordered="false"
+ * @generated
+ */
+ LayerOperatorDescriptor getLayerOperatorDescriptor();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptor <em>Layer Operator Descriptor</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layer Operator Descriptor</em>' reference.
+ * @see #getLayerOperatorDescriptor()
+ * @generated
+ */
+ void setLayerOperatorDescriptor(LayerOperatorDescriptor value);
+
+ /**
+ * Returns the value of the '<em><b>Layer Operator Descriptor Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Operator Descriptor Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Operator Descriptor Name</em>' attribute.
+ * @see #setLayerOperatorDescriptorName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayerOperator_LayerOperatorDescriptorName()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getLayerOperatorDescriptorName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptorName <em>Layer Operator Descriptor Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layer Operator Descriptor Name</em>' attribute.
+ * @see #getLayerOperatorDescriptorName()
+ * @generated
+ */
+ void setLayerOperatorDescriptorName(String value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isDescriptorSet();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void resetDescriptor();
+} // AbstractLayerOperator
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AllViewsDerivedLayer.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AllViewsDerivedLayer.java
new file mode 100644
index 00000000000..5e6f20c115e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AllViewsDerivedLayer.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>All Views Derived Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAllViewsDerivedLayer()
+ * @model
+ * @generated
+ */
+public interface AllViewsDerivedLayer extends AbstractLayer {
+} // AllViewsDerivedLayer
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AndStackedLayerOperatorDescriptor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AndStackedLayerOperatorDescriptor.java
new file mode 100644
index 00000000000..5fa253e0041
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AndStackedLayerOperatorDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>And Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAndStackedLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface AndStackedLayerOperatorDescriptor extends StackedLayerOperatorDescriptor {
+} // AndStackedLayerOperatorDescriptor
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ApplicationDependantElement.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ApplicationDependantElement.java
new file mode 100644
index 00000000000..b915a2a359f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ApplicationDependantElement.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Application Dependant Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getApplicationDependantElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ApplicationDependantElement extends EObject {
+ /**
+ * Returns the value of the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Application</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Application</em>' reference.
+ * @see #setApplication(LayersStackApplication)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getApplicationDependantElement_Application()
+ * @model ordered="false"
+ * @generated
+ */
+ LayersStackApplication getApplication();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement#getApplication <em>Application</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Application</em>' reference.
+ * @see #getApplication()
+ * @generated
+ */
+ void setApplication(LayersStackApplication value);
+
+} // ApplicationDependantElement
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanInstance.java
new file mode 100644
index 00000000000..28a57585d18
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanInstance.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanInstance()
+ * @model
+ * @generated
+ */
+public interface BooleanInstance extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(boolean)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanInstance_Value()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance#isValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #isValue()
+ * @generated
+ */
+ void setValue(boolean value);
+
+} // BooleanInstance
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanPropertyValue.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanPropertyValue.java
new file mode 100644
index 00000000000..69bf03b170b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanPropertyValue.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Property Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanPropertyValue#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanPropertyValue()
+ * @model
+ * @generated
+ */
+public interface BooleanPropertyValue extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(boolean)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanPropertyValue_Value()
+ * @model unique="false" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanPropertyValue#isValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #isValue()
+ * @generated
+ */
+ void setValue(boolean value);
+
+} // BooleanPropertyValue
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanType.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanType.java
new file mode 100644
index 00000000000..ada00e3cdbd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanType()
+ * @model
+ * @generated
+ */
+public interface BooleanType extends Type {
+} // BooleanType
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanValue.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanValue.java
new file mode 100644
index 00000000000..85bdebdecae
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanValue.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanValue#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanValue()
+ * @model
+ * @generated
+ */
+public interface BooleanValue extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(boolean)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanValue_Value()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanValue#isValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #isValue()
+ * @generated
+ */
+ void setValue(boolean value);
+
+} // BooleanValue
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Color.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Color.java
new file mode 100644
index 00000000000..0e6f0b525f5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Color.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Color</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getColor()
+ * @model
+ * @generated
+ */
+public interface Color extends Type {
+} // Color
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ColorInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ColorInstance.java
new file mode 100644
index 00000000000..4dacedce08a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ColorInstance.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Color Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getColorInstance()
+ * @model
+ * @generated
+ */
+public interface ColorInstance extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getColorInstance_Value()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+} // ColorInstance
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomLayerOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomLayerOperator.java
new file mode 100644
index 00000000000..387a4280da5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomLayerOperator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Custom Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomLayerOperator()
+ * @model
+ * @generated
+ */
+public interface CustomLayerOperator extends LayerOperator {
+} // CustomLayerOperator
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomPropertyOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomPropertyOperator.java
new file mode 100644
index 00000000000..dc6ee34b16c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomPropertyOperator.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Custom Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassname <em>Classname</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getOperatorInstance <em>Operator Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassBundleID <em>Class Bundle ID</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomPropertyOperator()
+ * @model
+ * @generated
+ */
+public interface CustomPropertyOperator extends PropertyOperator {
+ /**
+ * Returns the value of the '<em><b>Classname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Classname</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Classname</em>' attribute.
+ * @see #setClassname(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomPropertyOperator_Classname()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getClassname();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassname <em>Classname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Classname</em>' attribute.
+ * @see #getClassname()
+ * @generated
+ */
+ void setClassname(String value);
+
+ /**
+ * Returns the value of the '<em><b>Operator Instance</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operator Instance</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Operator Instance</em>' attribute.
+ * @see #setOperatorInstance(CustomPropertyOperatorsInstance)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomPropertyOperator_OperatorInstance()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOpertorInstance" required="true" ordered="false"
+ * @generated
+ */
+ CustomPropertyOperatorsInstance getOperatorInstance();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getOperatorInstance <em>Operator Instance</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Operator Instance</em>' attribute.
+ * @see #getOperatorInstance()
+ * @generated
+ */
+ void setOperatorInstance(CustomPropertyOperatorsInstance value);
+
+ /**
+ * Returns the value of the '<em><b>Class Bundle ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Class Bundle ID</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Class Bundle ID</em>' attribute.
+ * @see #setClassBundleID(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomPropertyOperator_ClassBundleID()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getClassBundleID();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassBundleID <em>Class Bundle ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Class Bundle ID</em>' attribute.
+ * @see #getClassBundleID()
+ * @generated
+ */
+ void setClassBundleID(String value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+ * @generated
+ */
+ void resetOperatorInstance() throws LayersException;
+
+} // CustomPropertyOperator
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomType.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomType.java
new file mode 100644
index 00000000000..a172ada2b24
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomType.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Custom Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType#getClassifier <em>Classifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomType()
+ * @model
+ * @generated
+ */
+public interface CustomType extends Type {
+ /**
+ * Returns the value of the '<em><b>Classifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Classifier</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Classifier</em>' attribute.
+ * @see #setClassifier(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomType_Classifier()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getClassifier();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType#getClassifier <em>Classifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Classifier</em>' attribute.
+ * @see #getClassifier()
+ * @generated
+ */
+ void setClassifier(String value);
+
+} // CustomType
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/DefaultPropertyOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/DefaultPropertyOperator.java
new file mode 100644
index 00000000000..1db6ed9958c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/DefaultPropertyOperator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Default Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getDefaultPropertyOperator()
+ * @model
+ * @generated
+ */
+public interface DefaultPropertyOperator extends PropertyOperator {
+} // DefaultPropertyOperator
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/EventLevel.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/EventLevel.java
new file mode 100644
index 00000000000..39902075abc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/EventLevel.java
@@ -0,0 +1,208 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Event Level</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getEventLevel()
+ * @model
+ * @generated
+ */
+public enum EventLevel implements Enumerator {
+ /**
+ * The '<em><b>Level1</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LEVEL1_VALUE
+ * @generated
+ * @ordered
+ */
+ LEVEL1(0, "level1", "level1"),
+
+ /**
+ * The '<em><b>All Levels</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #ALL_LEVELS_VALUE
+ * @generated
+ * @ordered
+ */
+ ALL_LEVELS(-1, "allLevels", "allLevels");
+
+ /**
+ * The '<em><b>Level1</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Level1</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LEVEL1
+ * @model name="level1"
+ * @generated
+ * @ordered
+ */
+ public static final int LEVEL1_VALUE = 0;
+
+ /**
+ * The '<em><b>All Levels</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>All Levels</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ALL_LEVELS
+ * @model name="allLevels"
+ * @generated
+ * @ordered
+ */
+ public static final int ALL_LEVELS_VALUE = -1;
+
+ /**
+ * An array of all the '<em><b>Event Level</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final EventLevel[] VALUES_ARRAY =
+ new EventLevel[] {
+ LEVEL1,
+ ALL_LEVELS,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Event Level</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<EventLevel> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Event Level</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static EventLevel get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ EventLevel result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Event Level</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static EventLevel getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ EventLevel result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Event Level</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static EventLevel get(int value) {
+ switch (value) {
+ case LEVEL1_VALUE: return LEVEL1;
+ case ALL_LEVELS_VALUE: return ALL_LEVELS;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EventLevel(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //EventLevel
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Fill.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Fill.java
new file mode 100644
index 00000000000..0e55c04e9ef
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Fill.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fill</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFill()
+ * @model
+ * @generated
+ */
+public interface Fill extends Type {
+} // Fill
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillInstance.java
new file mode 100644
index 00000000000..15a8d2af82a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillInstance.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fill Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getTransparency <em>Transparency</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getFillColor <em>Fill Color</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFillInstance()
+ * @model
+ * @generated
+ */
+public interface FillInstance extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Transparency</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Transparency</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Transparency</em>' attribute.
+ * @see #setTransparency(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFillInstance_Transparency()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getTransparency();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getTransparency <em>Transparency</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Transparency</em>' attribute.
+ * @see #getTransparency()
+ * @generated
+ */
+ void setTransparency(int value);
+
+ /**
+ * Returns the value of the '<em><b>Fill Color</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fill Color</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fill Color</em>' containment reference.
+ * @see #setFillColor(ColorInstance)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFillInstance_FillColor()
+ * @model containment="true" required="true" ordered="false"
+ * @generated
+ */
+ ColorInstance getFillColor();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getFillColor <em>Fill Color</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fill Color</em>' containment reference.
+ * @see #getFillColor()
+ * @generated
+ */
+ void setFillColor(ColorInstance value);
+
+} // FillInstance
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillPropertySetter.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillPropertySetter.java
new file mode 100644
index 00000000000..f5cd9f497d4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillPropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fill Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFillPropertySetter()
+ * @model
+ * @generated
+ */
+public interface FillPropertySetter extends PropertySetter {
+} // FillPropertySetter
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Folder.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Folder.java
new file mode 100644
index 00000000000..d1b39585f21
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Folder.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getElements <em>Elements</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFolder()
+ * @model
+ * @generated
+ */
+public interface Folder extends FolderElement {
+ /**
+ * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.FolderElement}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Elements</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Elements</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFolder_Elements()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ EList<FolderElement> getElements();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFolder_Name()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // Folder
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FolderElement.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FolderElement.java
new file mode 100644
index 00000000000..ff2948b6876
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FolderElement.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFolderElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface FolderElement extends EObject {
+} // FolderElement
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontInstance.java
new file mode 100644
index 00000000000..5f1a45f99e8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontInstance.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Font Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontColor <em>Font Color</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontName <em>Font Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontHeigh <em>Font Heigh</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#isBold <em>Bold</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance()
+ * @model
+ * @generated
+ */
+public interface FontInstance extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Font Color</b></em>' attribute.
+ * The default value is <code>"15053796"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Font Color</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Font Color</em>' attribute.
+ * @see #setFontColor(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance_FontColor()
+ * @model default="15053796" dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getFontColor();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontColor <em>Font Color</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Font Color</em>' attribute.
+ * @see #getFontColor()
+ * @generated
+ */
+ void setFontColor(int value);
+
+ /**
+ * Returns the value of the '<em><b>Font Name</b></em>' attribute.
+ * The default value is <code>"Segoe UI"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Font Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Font Name</em>' attribute.
+ * @see #setFontName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance_FontName()
+ * @model default="Segoe UI" dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getFontName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontName <em>Font Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Font Name</em>' attribute.
+ * @see #getFontName()
+ * @generated
+ */
+ void setFontName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Font Heigh</b></em>' attribute.
+ * The default value is <code>"9"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Font Heigh</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Font Heigh</em>' attribute.
+ * @see #setFontHeigh(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance_FontHeigh()
+ * @model default="9" dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getFontHeigh();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontHeigh <em>Font Heigh</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Font Heigh</em>' attribute.
+ * @see #getFontHeigh()
+ * @generated
+ */
+ void setFontHeigh(int value);
+
+ /**
+ * Returns the value of the '<em><b>Bold</b></em>' attribute.
+ * The default value is <code>"true"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Bold</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Bold</em>' attribute.
+ * @see #setBold(boolean)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance_Bold()
+ * @model default="true" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isBold();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#isBold <em>Bold</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Bold</em>' attribute.
+ * @see #isBold()
+ * @generated
+ */
+ void setBold(boolean value);
+
+} // FontInstance
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontPropertySetter.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontPropertySetter.java
new file mode 100644
index 00000000000..4a5dda3cf8a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontPropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Font Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontPropertySetter()
+ * @model
+ * @generated
+ */
+public interface FontPropertySetter extends PropertySetter {
+} // FontPropertySetter
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontType.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontType.java
new file mode 100644
index 00000000000..f0be979b1ad
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Font Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontType()
+ * @model
+ * @generated
+ */
+public interface FontType extends Type {
+} // FontType
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntInstance.java
new file mode 100644
index 00000000000..cb38c103d3e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntInstance.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Int Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntInstance()
+ * @model
+ * @generated
+ */
+public interface IntInstance extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntInstance_Value()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+} // IntInstance
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntPropertyValue.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntPropertyValue.java
new file mode 100644
index 00000000000..be0dca5e03d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntPropertyValue.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Int Property Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.IntPropertyValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntPropertyValue()
+ * @model
+ * @generated
+ */
+public interface IntPropertyValue extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntPropertyValue_Value()
+ * @model unique="false" dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntPropertyValue#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+} // IntPropertyValue
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntType.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntType.java
new file mode 100644
index 00000000000..033c6f0ff81
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Int Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntType()
+ * @model
+ * @generated
+ */
+public interface IntType extends Type {
+} // IntType
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntValue.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntValue.java
new file mode 100644
index 00000000000..ae94fceab51
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntValue.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Int Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.IntValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntValue()
+ * @model
+ * @generated
+ */
+public interface IntValue extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntValue_Value()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntValue#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+} // IntValue
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsAbstractUmlSetter.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsAbstractUmlSetter.java
new file mode 100644
index 00000000000..590c43c5507
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsAbstractUmlSetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>is Abstract Uml Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIsAbstractUmlSetter()
+ * @model
+ * @generated
+ */
+public interface IsAbstractUmlSetter extends PropertySetter {
+} // IsAbstractUmlSetter
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsValidPropertySetter.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsValidPropertySetter.java
new file mode 100644
index 00000000000..525ffb247d7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsValidPropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Is Valid Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIsValidPropertySetter()
+ * @model
+ * @generated
+ */
+public interface IsValidPropertySetter extends PropertySetter {
+} // IsValidPropertySetter
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsVisiblePropertySetter.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsVisiblePropertySetter.java
new file mode 100644
index 00000000000..ebf674af06d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsVisiblePropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Is Visible Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIsVisiblePropertySetter()
+ * @model
+ * @generated
+ */
+public interface IsVisiblePropertySetter extends PropertySetter {
+} // IsVisiblePropertySetter
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Layer.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Layer.java
new file mode 100644
index 00000000000..43ae88b947d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Layer.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayer()
+ * @model
+ * @generated
+ */
+public interface Layer extends AbstractLayer {
+
+} // Layer
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerApplicationFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerApplicationFactory.java
new file mode 100644
index 00000000000..b9dff4c3b9c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerApplicationFactory.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Application Factory</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerApplicationFactory()
+ * @model
+ * @generated
+ */
+public interface LayerApplicationFactory extends EObject {
+ /**
+ * Returns the value of the '<em><b>Application</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory <em>Factory</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Application</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Application</em>' container reference.
+ * @see #setApplication(LayersStackApplication)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerApplicationFactory_Application()
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory
+ * @model opposite="factory" ordered="false"
+ * @generated
+ */
+ LayersStackApplication getApplication();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication <em>Application</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Application</em>' container reference.
+ * @see #getApplication()
+ * @generated
+ */
+ void setApplication(LayersStackApplication value);
+
+} // LayerApplicationFactory
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptor.java
new file mode 100644
index 00000000000..14b0fb647a6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptor.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor#getPropertyRegistry <em>Property Registry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerDescriptor()
+ * @model
+ * @generated
+ */
+public interface LayerDescriptor extends EObject {
+
+ /**
+ * Returns the value of the '<em><b>Property Registry</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Registry</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Registry</em>' reference.
+ * @see #setPropertyRegistry(PropertyRegistry)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerDescriptor_PropertyRegistry()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ PropertyRegistry getPropertyRegistry();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor#getPropertyRegistry <em>Property Registry</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property Registry</em>' reference.
+ * @see #getPropertyRegistry()
+ * @generated
+ */
+ void setPropertyRegistry(PropertyRegistry value);
+} // LayerDescriptor
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptorRegistry.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptorRegistry.java
new file mode 100644
index 00000000000..734549d10d5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptorRegistry.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry#getLayerDescriptors <em>Layer Descriptors</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerDescriptorRegistry()
+ * @model
+ * @generated
+ */
+public interface LayerDescriptorRegistry extends EObject {
+ /**
+ * Returns the value of the '<em><b>Layer Descriptors</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Descriptors</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Descriptors</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerDescriptorRegistry_LayerDescriptors()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ EList<LayerDescriptor> getLayerDescriptors();
+
+} // LayerDescriptorRegistry
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerExpression.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerExpression.java
new file mode 100644
index 00000000000..1999e47b892
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerExpression.java
@@ -0,0 +1,350 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal <em>Is Layer Enabled Internal</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabled <em>Is Layer Enabled</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isBranchEnabled <em>Is Branch Enabled</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getOwningLayersStack <em>Owning Layers Stack</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression()
+ * @model abstract="true"
+ * @generated
+ */
+public interface LayerExpression extends ApplicationDependantElement {
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_Name()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Description</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Description</em>' attribute.
+ * @see #setDescription(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_Description()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDescription();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getDescription <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Description</em>' attribute.
+ * @see #getDescription()
+ * @generated
+ */
+ void setDescription(String value);
+
+ /**
+ * Returns the value of the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Is Layer Enabled Internal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Is Layer Enabled Internal</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_IsLayerEnabledInternal()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+ * @generated
+ */
+ boolean isLayerEnabledInternal();
+
+ /**
+ * Returns the value of the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * The default value is <code>"true"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Is Layer Enabled</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Is Layer Enabled</em>' attribute.
+ * @see #setIsLayerEnabled(boolean)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_IsLayerEnabled()
+ * @model default="true" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isLayerEnabled();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabled <em>Is Layer Enabled</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Is Layer Enabled</em>' attribute.
+ * @see #isLayerEnabled()
+ * @generated
+ */
+ void setIsLayerEnabled(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * The default value is <code>"true"</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Is the branch from this node to the root enabled ?
+ * A branch is enabled if all node of the branch are enabled.
+ * In other world, if an ancestor node is disable, the branch is disabled.
+ * Setting the value of this node set the value of the subnodes.
+ * <!-- end-model-doc -->
+ * @return the value of the '<em>Is Branch Enabled</em>' attribute.
+ * @see #setIsBranchEnabled(boolean)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_IsBranchEnabled()
+ * @model default="true" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" transient="true" ordered="false"
+ * @generated
+ */
+ boolean isBranchEnabled();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isBranchEnabled <em>Is Branch Enabled</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Is Branch Enabled</em>' attribute.
+ * @see #isBranchEnabled()
+ * @generated
+ */
+ void setIsBranchEnabled(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Owning Layers Stack</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Owning Layers Stack</em>' reference.
+ * @see #setOwningLayersStack(LayersStack)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_OwningLayersStack()
+ * @model ordered="false"
+ * @generated
+ */
+ LayersStack getOwningLayersStack();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getOwningLayersStack <em>Owning Layers Stack</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Owning Layers Stack</em>' reference.
+ * @see #getOwningLayersStack()
+ * @generated
+ */
+ void setOwningLayersStack(LayersStack value);
+
+ /**
+ * Returns the value of the '<em><b>State</b></em>' attribute.
+ * The default value is <code>"detached"</code>.
+ * The literals are from the enumeration {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>State</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>State</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+ * @see #setState(LayerState)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_State()
+ * @model default="detached" unique="false" required="true" ordered="false"
+ * @generated
+ */
+ LayerState getState();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getState <em>State</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>State</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+ * @see #getState()
+ * @generated
+ */
+ void setState(LayerState value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewMany="true" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(EList<View> view, Property property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyMany="true"
+ * @generated
+ */
+ EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, EList<Property> property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Method called to specify that this Layer should be initialized for the specified LayerStack.
+ * Init this Layer for the specified LayersStack.
+ * This method is called by the LayersStack when it detect that tha layer is attached to it.
+ *
+ * <!-- end-model-doc -->
+ * @model owningLayersStackRequired="true" owningLayersStackOrdered="false"
+ * @generated
+ */
+ void attachToLayersStack(LayersStack owningLayersStack);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * A checked version of getOwningLayersStack.
+ *
+ * <!-- end-model-doc -->
+ * @model kind="operation" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException"
+ * @generated
+ */
+ LayersStack getLayersStack() throws NotFoundException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * This method is called by the class immediately after entering in attached state.
+ * The methodcan be used to start the layer behaviors.
+ * <!-- end-model-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+ * @generated
+ */
+ void enterAttachedState() throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Try to attach this Layer. If successful, the state go to "attached". Otherwise, an exception is thrown.
+ * A Layer can be attached if its required attributes are set.
+ * Required attributes:
+ * <ul>
+ * <li>application</li>
+ * <li>owningLayerStack</li>
+ * <li>parent container</li>
+ * <li></li>
+ * </ul>
+ * Just after enterring in "attached" state, the enterAttachedState() method is called.
+ * If this Layer is successfully attached, then attach subLayers.
+ * <!-- end-model-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+ * @generated
+ */
+ void attach() throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Detach the Layer. The state go to "detached".
+ * Associated behavior are stopped.
+ * <!-- end-model-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+ * @generated
+ */
+ void detach() throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * This method is called just before this Layer leave the attached state.
+ *
+ * <!-- end-model-doc -->
+ * @model
+ * @generated
+ */
+ void exitAttachedState();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws LayersException
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" viewMany="true" propertyRequired="true" propertyOrdered="false"
+ * @generated NOT
+ */
+ EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> view, Property property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws LayersException
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyMany="true"
+ * @generated NOT
+ */
+ EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> property) throws LayersException;
+} // LayerExpression
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerNamedStyle.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerNamedStyle.java
new file mode 100644
index 00000000000..7ae1f6f82b4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerNamedStyle.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.NamedStyle;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Named Style</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle#getLayersStack <em>Layers Stack</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerNamedStyle()
+ * @model
+ * @generated
+ */
+public interface LayerNamedStyle extends NamedStyle {
+ /**
+ * Returns the value of the '<em><b>Layers Stack</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layers Stack</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layers Stack</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerNamedStyle_LayersStack()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ EList<LayersStack> getLayersStack();
+
+} // LayerNamedStyle
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperator.java
new file mode 100644
index 00000000000..6595bbe8c6a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperator.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator#getLayers <em>Layers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperator()
+ * @model abstract="true"
+ * @generated
+ */
+public interface LayerOperator extends LayerExpression, LayersContainer {
+
+ /**
+ * Returns the value of the '<em><b>Layers</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layers</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layers</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperator_Layers()
+ * @model containment="true"
+ * @generated
+ */
+ EList<LayerExpression> getLayers();
+} // LayerOperator
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptor.java
new file mode 100644
index 00000000000..e8ef2162ffc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptor.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperators <em>Property Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorDescriptor extends EObject {
+ /**
+ * Returns the value of the '<em><b>Property Operators</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Operators</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Operators</em>' reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptor_PropertyOperators()
+ * @model transient="true"
+ * @generated
+ */
+ EList<PropertyOperator> getPropertyOperators();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptor_Name()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ PropertyOperator getPropertyOperator(Property property) throws NotFoundException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model propertyRequired="true" propertyOrdered="false" operatorRequired="true" operatorOrdered="false"
+ * @generated
+ */
+ void setPropertyOperator(Property property, PropertyOperator operator);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ AbstractLayerOperator createLayerOperator();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model sizeDataType="org.eclipse.papyrus.layers.stackmodel.layers.int" sizeRequired="true" sizeOrdered="false" defaultPropertyOperatorRequired="true" defaultPropertyOperatorOrdered="false"
+ * @generated
+ */
+ void setPropertyCollectionSize(int size, DefaultPropertyOperator defaultPropertyOperator);
+
+} // LayerOperatorDescriptor
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptorRegistry.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptorRegistry.java
new file mode 100644
index 00000000000..fed69b3c648
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptorRegistry.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDescriptors <em>Descriptors</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperators <em>Property Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyCollectionSize <em>Property Collection Size</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDefaultOperator <em>Default Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorDescriptorRegistry extends EObject {
+ /**
+ * Returns the value of the '<em><b>Descriptors</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Descriptors</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Descriptors</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry_Descriptors()
+ * @model containment="true" transient="true" ordered="false"
+ * @generated
+ */
+ EList<LayerOperatorDescriptor> getDescriptors();
+
+ /**
+ * Returns the value of the '<em><b>Property Operators</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Operators</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Operators</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry_PropertyOperators()
+ * @model containment="true" transient="true"
+ * @generated
+ */
+ EList<PropertyOperator> getPropertyOperators();
+
+ /**
+ * Returns the value of the '<em><b>Property Collection Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Collection Size</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Collection Size</em>' attribute.
+ * @see #setPropertyCollectionSize(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry_PropertyCollectionSize()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getPropertyCollectionSize();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyCollectionSize <em>Property Collection Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property Collection Size</em>' attribute.
+ * @see #getPropertyCollectionSize()
+ * @generated
+ */
+ void setPropertyCollectionSize(int value);
+
+ /**
+ * Returns the value of the '<em><b>Default Operator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Operator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Operator</em>' reference.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry_DefaultOperator()
+ * @model required="true" transient="true" changeable="false" ordered="false"
+ * @generated
+ */
+ DefaultPropertyOperator getDefaultOperator();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model descriptorRequired="true" descriptorOrdered="false"
+ * @generated
+ */
+ void addLayerOperatorDescriptor(LayerOperatorDescriptor descriptor);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" nameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" nameRequired="true" nameOrdered="false"
+ * @generated
+ */
+ LayerOperatorDescriptor getLayerOperatorDescriptor(String name) throws NotFoundException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model operatorRequired="true" operatorOrdered="false"
+ * @generated
+ */
+ void addPropertyOperator(PropertyOperator operator);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" nameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" nameRequired="true" nameOrdered="false"
+ * @generated
+ */
+ PropertyOperator getPropertyOperator(String name) throws NotFoundException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyRequired="true" propertyOrdered="false" operatorNameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" operatorNameRequired="true" operatorNameOrdered="false" layerDescriptorNameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" layerDescriptorNameRequired="true" layerDescriptorNameOrdered="false"
+ * @generated
+ */
+ void attachOperatorToDescriptor(Property property, String operatorName, String layerDescriptorName) throws NotFoundException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" layerOperatorIDDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" layerOperatorIDRequired="true" layerOperatorIDOrdered="false"
+ * @generated
+ */
+ AbstractLayerOperator createLayerOperator(String layerOperatorID) throws LayersException;
+
+} // LayerOperatorDescriptorRegistry
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerStackDescriptorRegistry.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerStackDescriptorRegistry.java
new file mode 100644
index 00000000000..26b7a756416
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerStackDescriptorRegistry.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Stack Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerStackDescriptorRegistry()
+ * @model
+ * @generated
+ */
+public interface LayerStackDescriptorRegistry extends EObject {
+} // LayerStackDescriptorRegistry
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerState.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerState.java
new file mode 100644
index 00000000000..6932cacaba8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerState.java
@@ -0,0 +1,208 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Layer State</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerState()
+ * @model
+ * @generated
+ */
+public enum LayerState implements Enumerator {
+ /**
+ * The '<em><b>Detached</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DETACHED_VALUE
+ * @generated
+ * @ordered
+ */
+ DETACHED(0, "detached", "detached"),
+
+ /**
+ * The '<em><b>Attached</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #ATTACHED_VALUE
+ * @generated
+ * @ordered
+ */
+ ATTACHED(1, "attached", "attached");
+
+ /**
+ * The '<em><b>Detached</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Detached</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DETACHED
+ * @model name="detached"
+ * @generated
+ * @ordered
+ */
+ public static final int DETACHED_VALUE = 0;
+
+ /**
+ * The '<em><b>Attached</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Attached</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ATTACHED
+ * @model name="attached"
+ * @generated
+ * @ordered
+ */
+ public static final int ATTACHED_VALUE = 1;
+
+ /**
+ * An array of all the '<em><b>Layer State</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final LayerState[] VALUES_ARRAY =
+ new LayerState[] {
+ DETACHED,
+ ATTACHED,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Layer State</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<LayerState> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Layer State</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static LayerState get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ LayerState result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Layer State</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static LayerState getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ LayerState result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Layer State</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static LayerState get(int value) {
+ switch (value) {
+ case DETACHED_VALUE: return DETACHED;
+ case ATTACHED_VALUE: return ATTACHED;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private LayerState(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //LayerState
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersContainer.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersContainer.java
new file mode 100644
index 00000000000..53166a533e5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersContainer.java
@@ -0,0 +1,31 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Container</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Layers implementing this interface can contains others layers.
+ * The interface provide one method allowing to add a LayerExpression to the container.
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersContainer()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface LayersContainer extends EObject {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model layerRequired="true" layerOrdered="false"
+ * @generated
+ */
+ void addLayer(LayerExpression layer);
+
+} // LayersContainer
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactory.java
new file mode 100644
index 00000000000..38c7748c4fe
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactory.java
@@ -0,0 +1,529 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage
+ * @generated
+ */
+public interface LayersFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ LayersFactory eINSTANCE = org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Layer Named Style</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Named Style</em>'.
+ * @generated
+ */
+ LayerNamedStyle createLayerNamedStyle();
+
+ /**
+ * Returns a new object of class '<em>Stack</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Stack</em>'.
+ * @generated
+ */
+ LayersStack createLayersStack();
+
+ /**
+ * Returns a new object of class '<em>Layer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer</em>'.
+ * @generated
+ */
+ Layer createLayer();
+
+ /**
+ * Returns a new object of class '<em>Color</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Color</em>'.
+ * @generated
+ */
+ Color createColor();
+
+ /**
+ * Returns a new object of class '<em>Color Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Color Instance</em>'.
+ * @generated
+ */
+ ColorInstance createColorInstance();
+
+ /**
+ * Returns a new object of class '<em>Fill Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Fill Instance</em>'.
+ * @generated
+ */
+ FillInstance createFillInstance();
+
+ /**
+ * Returns a new object of class '<em>Fill</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Fill</em>'.
+ * @generated
+ */
+ Fill createFill();
+
+ /**
+ * Returns a new object of class '<em>Fill Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Fill Property Setter</em>'.
+ * @generated
+ */
+ FillPropertySetter createFillPropertySetter();
+
+ /**
+ * Returns a new object of class '<em>Is Valid Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Is Valid Property Setter</em>'.
+ * @generated
+ */
+ IsValidPropertySetter createIsValidPropertySetter();
+
+ /**
+ * Returns a new object of class '<em>Null Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Null Property Setter</em>'.
+ * @generated
+ */
+ NullPropertySetter createNullPropertySetter();
+
+ /**
+ * Returns a new object of class '<em>Line Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Line Type</em>'.
+ * @generated
+ */
+ LineType createLineType();
+
+ /**
+ * Returns a new object of class '<em>Line Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Line Instance</em>'.
+ * @generated
+ */
+ LineInstance createLineInstance();
+
+ /**
+ * Returns a new object of class '<em>Line Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Line Property Setter</em>'.
+ * @generated
+ */
+ LinePropertySetter createLinePropertySetter();
+
+ /**
+ * Returns a new object of class '<em>Font Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Font Property Setter</em>'.
+ * @generated
+ */
+ FontPropertySetter createFontPropertySetter();
+
+ /**
+ * Returns a new object of class '<em>Font Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Font Instance</em>'.
+ * @generated
+ */
+ FontInstance createFontInstance();
+
+ /**
+ * Returns a new object of class '<em>Font Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Font Type</em>'.
+ * @generated
+ */
+ FontType createFontType();
+
+ /**
+ * Returns a new object of class '<em>Is Visible Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Is Visible Property Setter</em>'.
+ * @generated
+ */
+ IsVisiblePropertySetter createIsVisiblePropertySetter();
+
+ /**
+ * Returns a new object of class '<em>Layer Operator Descriptor Registry</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Operator Descriptor Registry</em>'.
+ * @generated
+ */
+ LayerOperatorDescriptorRegistry createLayerOperatorDescriptorRegistry();
+
+ /**
+ * Returns a new object of class '<em>Top Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Top Layer Operator Descriptor</em>'.
+ * @generated
+ */
+ TopLayerOperatorDescriptor createTopLayerOperatorDescriptor();
+
+ /**
+ * Returns a new object of class '<em>Stacked Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Stacked Layer Operator Descriptor</em>'.
+ * @generated
+ */
+ StackedLayerOperatorDescriptor createStackedLayerOperatorDescriptor();
+
+ /**
+ * Returns a new object of class '<em>Custom Property Operator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Custom Property Operator</em>'.
+ * @generated
+ */
+ CustomPropertyOperator createCustomPropertyOperator();
+
+ /**
+ * Returns a new object of class '<em>And Stacked Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>And Stacked Layer Operator Descriptor</em>'.
+ * @generated
+ */
+ AndStackedLayerOperatorDescriptor createAndStackedLayerOperatorDescriptor();
+
+ /**
+ * Returns a new object of class '<em>Or Stacked Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Or Stacked Layer Operator Descriptor</em>'.
+ * @generated
+ */
+ OrStackedLayerOperatorDescriptor createOrStackedLayerOperatorDescriptor();
+
+ /**
+ * Returns a new object of class '<em>Is Abstract Uml Setter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Is Abstract Uml Setter</em>'.
+ * @generated
+ */
+ IsAbstractUmlSetter createIsAbstractUmlSetter();
+
+ /**
+ * Returns a new object of class '<em>All Views Derived Layer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>All Views Derived Layer</em>'.
+ * @generated
+ */
+ AllViewsDerivedLayer createAllViewsDerivedLayer();
+
+ /**
+ * Returns a new object of class '<em>Layer Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Descriptor</em>'.
+ * @generated
+ */
+ LayerDescriptor createLayerDescriptor();
+
+ /**
+ * Returns a new object of class '<em>Layer Application Factory</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Application Factory</em>'.
+ * @generated
+ */
+ LayerApplicationFactory createLayerApplicationFactory();
+
+ /**
+ * Returns a new object of class '<em>Property Setter Registry</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Property Setter Registry</em>'.
+ * @generated
+ */
+ PropertySetterRegistry createPropertySetterRegistry();
+
+ /**
+ * Returns a new object of class '<em>Property</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Property</em>'.
+ * @generated
+ */
+ Property createProperty();
+
+ /**
+ * Returns a new object of class '<em>Metamodel</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Metamodel</em>'.
+ * @generated
+ */
+ Metamodel createMetamodel();
+
+ /**
+ * Returns a new object of class '<em>Folder</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Folder</em>'.
+ * @generated
+ */
+ Folder createFolder();
+
+ /**
+ * Returns a new object of class '<em>Int Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Int Instance</em>'.
+ * @generated
+ */
+ IntInstance createIntInstance();
+
+ /**
+ * Returns a new object of class '<em>Boolean Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Boolean Instance</em>'.
+ * @generated
+ */
+ BooleanInstance createBooleanInstance();
+
+ /**
+ * Returns a new object of class '<em>String Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>String Instance</em>'.
+ * @generated
+ */
+ StringInstance createStringInstance();
+
+ /**
+ * Returns a new object of class '<em>Int Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Int Type</em>'.
+ * @generated
+ */
+ IntType createIntType();
+
+ /**
+ * Returns a new object of class '<em>Boolean Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Boolean Type</em>'.
+ * @generated
+ */
+ BooleanType createBooleanType();
+
+ /**
+ * Returns a new object of class '<em>String Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>String Type</em>'.
+ * @generated
+ */
+ StringType createStringType();
+
+ /**
+ * Returns a new object of class '<em>Custom Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Custom Type</em>'.
+ * @generated
+ */
+ CustomType createCustomType();
+
+ /**
+ * Returns a new object of class '<em>Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Operator Descriptor</em>'.
+ * @generated
+ */
+ LayerOperatorDescriptor createLayerOperatorDescriptor();
+
+ /**
+ * Returns a new object of class '<em>Property Operator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Property Operator</em>'.
+ * @generated
+ */
+ PropertyOperator createPropertyOperator();
+
+ /**
+ * Returns a new object of class '<em>Default Property Operator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Default Property Operator</em>'.
+ * @generated
+ */
+ DefaultPropertyOperator createDefaultPropertyOperator();
+
+ /**
+ * Returns a new object of class '<em>Stack Application</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Stack Application</em>'.
+ * @generated
+ */
+ LayersStackApplication createLayersStackApplication();
+
+ /**
+ * Returns a new object of class '<em>Layer Stack Descriptor Registry</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Stack Descriptor Registry</em>'.
+ * @generated
+ */
+ LayerStackDescriptorRegistry createLayerStackDescriptorRegistry();
+
+ /**
+ * Returns a new object of class '<em>Property Registry</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Property Registry</em>'.
+ * @generated
+ */
+ PropertyRegistry createPropertyRegistry();
+
+ /**
+ * Returns a new object of class '<em>Property Index</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Property Index</em>'.
+ * @generated
+ */
+ PropertyIndex createPropertyIndex();
+
+ /**
+ * Returns a new object of class '<em>Simple Layer Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Simple Layer Descriptor</em>'.
+ * @generated
+ */
+ SimpleLayerDescriptor createSimpleLayerDescriptor();
+
+ /**
+ * Returns a new object of class '<em>Reg Exp Layer Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Reg Exp Layer Descriptor</em>'.
+ * @generated
+ */
+ RegExpLayerDescriptor createRegExpLayerDescriptor();
+
+ /**
+ * Returns a new object of class '<em>Null Instance</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Null Instance</em>'.
+ * @generated
+ */
+ NullInstance createNullInstance();
+
+ /**
+ * Returns a new object of class '<em>Reg Exp Layer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Reg Exp Layer</em>'.
+ * @generated
+ */
+ RegExpLayer createRegExpLayer();
+
+ /**
+ * Returns a new object of class '<em>Type Registry</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type Registry</em>'.
+ * @generated
+ */
+ TypeRegistry createTypeRegistry();
+
+ /**
+ * Returns a new object of class '<em>Layer Descriptor Registry</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer Descriptor Registry</em>'.
+ * @generated
+ */
+ LayerDescriptorRegistry createLayerDescriptorRegistry();
+
+ /**
+ * Returns a new object of class '<em>Top Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Top Layer Operator</em>'.
+ * @generated
+ */
+ TopLayerOperator createTopLayerOperator();
+
+ /**
+ * Returns a new object of class '<em>Stacked Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Stacked Layer Operator</em>'.
+ * @generated
+ */
+ StackedLayerOperator createStackedLayerOperator();
+
+ /**
+ * Returns a new object of class '<em>Custom Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Custom Layer Operator</em>'.
+ * @generated
+ */
+ CustomLayerOperator createCustomLayerOperator();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ LayersPackage getLayersPackage();
+
+} //LayersFactory
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactoryForStack.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactoryForStack.java
new file mode 100644
index 00000000000..c80b1e3eed2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactoryForStack.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage
+ * @generated
+ */
+public interface LayersFactoryForStack {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ LayersFactoryForStack eINSTANCE = org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Stack</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Stack</em>'.
+ * @generated
+ */
+ LayersStack createLayersStack();
+
+ /**
+ * Returns a new object of class '<em>Layer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer</em>'.
+ * @generated NOT
+ */
+ public Layer createLayer(LayersContainer parent, LayersStack owningStack, LayersStackApplication application)
+ throws LayersException;
+
+
+ /**
+ * Returns a new object of class '<em>Reg Exp Layer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Reg Exp Layer</em>'.
+ * @throws LayersException
+ * @generated
+ */
+ public RegExpLayer createRegExpLayer(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+ /**
+ * Returns a new object of class '<em>Top Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Top Layer Operator</em>'.
+ * @generated
+ */
+ public TopLayerOperator createTopLayerOperator(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+ /**
+ * Returns a new object of class '<em>Stacked Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Stacked Layer Operator</em>'.
+ * @generated
+ */
+ public StackedLayerOperator createStackedLayerOperator(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+ /**
+ * Standard initialization of a newly created layer.
+ *
+ * @param layer
+ * @param parentLayer
+ * @param owningStack
+ * @param application
+ * @return
+ * @throws LayersException
+ */
+ public LayerExpression initLayer(LayerExpression layer, LayersContainer parentLayer, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+ /**
+ * Create a LayerOperator by its ID.
+ * IDs are those used when the LayerOperator is registered in application'registry.
+ *
+ * @param layerOperatorID
+ * @param parent
+ * @param owningStack
+ * @param application
+ * @return
+ * @throws LayersException
+ */
+ public AbstractLayerOperator createLayerOperator(String layerOperatorID, LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+
+} //LayersFactory
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersPackage.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersPackage.java
new file mode 100644
index 00000000000..30578b62bb2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersPackage.java
@@ -0,0 +1,10986 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Start the LayesStack.
+ * This method should be called after the LayersStack creation. It is not called from the constructor, because
+ * the initialisation can differ if the LayersStack is created by the user or by EMF after a reloading.
+ *
+ * <!-- end-model-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface LayersPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "layers";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "org.eclipse.papyrus.layers.0.10";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.papyrus.layers.stackmodel.layers";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ LayersPackage eINSTANCE = org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl <em>Layer Named Style</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerNamedStyle()
+ * @generated
+ */
+ int LAYER_NAMED_STYLE = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_NAMED_STYLE__NAME = NotationPackage.NAMED_STYLE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Layers Stack</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_NAMED_STYLE__LAYERS_STACK = NotationPackage.NAMED_STYLE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Layer Named Style</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_NAMED_STYLE_FEATURE_COUNT = NotationPackage.NAMED_STYLE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Layer Named Style</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ * @ordered
+ */
+ int LAYER_NAMED_STYLE_OPERATION_COUNT = /*NotationPackage.NAMED_STYLE_OPERATION_COUNT +*/ 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer <em>Container</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersContainer()
+ * @generated
+ */
+ int LAYERS_CONTAINER = 26;
+
+ /**
+ * The number of structural features of the '<em>Container</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_CONTAINER_FEATURE_COUNT = 0;
+
+ /**
+ * The operation id for the '<em>Add Layer</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION = 0;
+
+ /**
+ * The number of operations of the '<em>Container</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_CONTAINER_OPERATION_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl <em>Stack</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersStack()
+ * @generated
+ */
+ int LAYERS_STACK = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl <em>Layer Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerExpression()
+ * @generated
+ */
+ int LAYER_EXPRESSION = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl <em>Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayer()
+ * @generated
+ */
+ int LAYER = 47;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeInstanceImpl <em>Type Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTypeInstance()
+ * @generated
+ */
+ int TYPE_INSTANCE = 11;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl <em>String To Type Instance Map</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToTypeInstanceMap()
+ * @generated
+ */
+ int STRING_TO_TYPE_INSTANCE_MAP = 29;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl <em>Layer Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerDescriptor()
+ * @generated
+ */
+ int LAYER_DESCRIPTOR = 16;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderElementImpl <em>Folder Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderElementImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFolderElement()
+ * @generated
+ */
+ int FOLDER_ELEMENT = 5;
+
+ /**
+ * The feature id for the '<em><b>Layers</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK__LAYERS = LAYERS_CONTAINER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK__NAME = LAYERS_CONTAINER_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK__DESCRIPTION = LAYERS_CONTAINER_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Diagram</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK__DIAGRAM = LAYERS_CONTAINER_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK__STATE = LAYERS_CONTAINER_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Stack</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_FEATURE_COUNT = LAYERS_CONTAINER_FEATURE_COUNT + 5;
+
+ /**
+ * The operation id for the '<em>Add Layer</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___ADD_LAYER__LAYEREXPRESSION = LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYERS_CONTAINER_OPERATION_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYERS_CONTAINER_OPERATION_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYERS_CONTAINER_OPERATION_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Start After Creation</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___START_AFTER_CREATION = LAYERS_CONTAINER_OPERATION_COUNT + 3;
+
+ /**
+ * The operation id for the '<em>Attach Layers</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___ATTACH_LAYERS = LAYERS_CONTAINER_OPERATION_COUNT + 4;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___ATTACH = LAYERS_CONTAINER_OPERATION_COUNT + 5;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___DETACH = LAYERS_CONTAINER_OPERATION_COUNT + 6;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___ENTER_ATTACHED_STATE = LAYERS_CONTAINER_OPERATION_COUNT + 7;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK___EXIT_ATTACHED_STATE = LAYERS_CONTAINER_OPERATION_COUNT + 8;
+
+ /**
+ * The number of operations of the '<em>Stack</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_OPERATION_COUNT = LAYERS_CONTAINER_OPERATION_COUNT + 9;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl <em>Application Dependant Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getApplicationDependantElement()
+ * @generated
+ */
+ int APPLICATION_DEPENDANT_ELEMENT = 3;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int APPLICATION_DEPENDANT_ELEMENT__APPLICATION = 0;
+
+ /**
+ * The number of structural features of the '<em>Application Dependant Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Application Dependant Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT = 0;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION__APPLICATION = APPLICATION_DEPENDANT_ELEMENT__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION__NAME = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION__DESCRIPTION = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION__IS_LAYER_ENABLED = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION__IS_BRANCH_ENABLED = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION__OWNING_LAYERS_STACK = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION__STATE = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Layer Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION_FEATURE_COUNT = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 7;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 3;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION___GET_LAYERS_STACK = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 4;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION___ENTER_ATTACHED_STATE = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 5;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION___ATTACH = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 6;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION___DETACH = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 7;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION___EXIT_ATTACHED_STATE = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 8;
+
+ /**
+ * The number of operations of the '<em>Layer Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_EXPRESSION_OPERATION_COUNT = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 9;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl <em>Layer Application Factory</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerApplicationFactory()
+ * @generated
+ */
+ int LAYER_APPLICATION_FACTORY = 17;
+
+ /**
+ * The number of structural features of the '<em>Folder Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER_ELEMENT_FEATURE_COUNT = 0;
+
+ /**
+ * The number of operations of the '<em>Folder Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER_ELEMENT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl <em>Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getProperty()
+ * @generated
+ */
+ int PROPERTY = 8;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getType()
+ * @generated
+ */
+ int TYPE = 9;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl <em>Metamodel</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getMetamodel()
+ * @generated
+ */
+ int METAMODEL = 10;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl <em>Folder</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFolder()
+ * @generated
+ */
+ int FOLDER = 30;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl <em>Int Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIntInstance()
+ * @generated
+ */
+ int INT_INSTANCE = 31;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl <em>Boolean Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBooleanInstance()
+ * @generated
+ */
+ int BOOLEAN_INSTANCE = 32;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl <em>String Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringInstance()
+ * @generated
+ */
+ int STRING_INSTANCE = 33;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl <em>Int Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIntType()
+ * @generated
+ */
+ int INT_TYPE = 34;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl <em>Boolean Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBooleanType()
+ * @generated
+ */
+ int BOOLEAN_TYPE = 35;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl <em>String Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringType()
+ * @generated
+ */
+ int STRING_TYPE = 36;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl <em>Custom Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomType()
+ * @generated
+ */
+ int CUSTOM_TYPE = 37;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl <em>Stack Application</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersStackApplication()
+ * @generated
+ */
+ int LAYERS_STACK_APPLICATION = 4;
+
+ /**
+ * The feature id for the '<em><b>Layers Stacks</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION__LAYERS_STACKS = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Layer Stack Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Property Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Layer Descriptor Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Factory</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION__FACTORY = FOLDER_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Property Setter Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Layer Operator Descriptor Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Stack Application</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 7;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack For</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION___GET_LAYERS_STACK_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Remove Layers Stack For</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION___REMOVE_LAYERS_STACK_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Is Layers Stack Attached For</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION___IS_LAYERS_STACK_ATTACHED_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Create Layers Stack For</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION___CREATE_LAYERS_STACK_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 3;
+
+ /**
+ * The operation id for the '<em>Lookup Layers Stack For</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION___LOOKUP_LAYERS_STACK_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 4;
+
+ /**
+ * The number of operations of the '<em>Stack Application</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYERS_STACK_APPLICATION_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerStackDescriptorRegistryImpl <em>Layer Stack Descriptor Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerStackDescriptorRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerStackDescriptorRegistry()
+ * @generated
+ */
+ int LAYER_STACK_DESCRIPTOR_REGISTRY = 6;
+
+ /**
+ * The number of structural features of the '<em>Layer Stack Descriptor Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_STACK_DESCRIPTOR_REGISTRY_FEATURE_COUNT = 0;
+
+ /**
+ * The number of operations of the '<em>Layer Stack Descriptor Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_STACK_DESCRIPTOR_REGISTRY_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl <em>Property Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyRegistry()
+ * @generated
+ */
+ int PROPERTY_REGISTRY = 7;
+
+ /**
+ * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_REGISTRY__PROPERTIES = 0;
+
+ /**
+ * The feature id for the '<em><b>Type Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_REGISTRY__TYPE_REGISTRY = 1;
+
+ /**
+ * The feature id for the '<em><b>Properties Count</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_REGISTRY__PROPERTIES_COUNT = 2;
+
+ /**
+ * The number of structural features of the '<em>Property Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_REGISTRY_FEATURE_COUNT = 3;
+
+ /**
+ * The operation id for the '<em>Get Property Index</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_REGISTRY___GET_PROPERTY_INDEX__STRING = 0;
+
+ /**
+ * The operation id for the '<em>Get Property</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_REGISTRY___GET_PROPERTY__STRING = 1;
+
+ /**
+ * The operation id for the '<em>Add Property</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_REGISTRY___ADD_PROPERTY__PROPERTY = 2;
+
+ /**
+ * The number of operations of the '<em>Property Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_REGISTRY_OPERATION_COUNT = 3;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY__TYPE = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY__DEFAULT_VALUE = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY__NAME = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY__DESCRIPTION = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY__INDEX = FOLDER_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 5;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY___CREATE_INSTANCE = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE__METAMODEL = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE__NAME = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE__DESCRIPTION = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE___CREATE_INSTANCE = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL__NAME = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL__DESCRIPTION = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Nsuri</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL__NSURI = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Plugin ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL__PLUGIN_ID = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>EPackage Instance Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL__EPACKAGE_INSTANCE_NAME = FOLDER_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Is Type Valid</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL__IS_TYPE_VALID = FOLDER_ELEMENT_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Metamodel</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 6;
+
+ /**
+ * The operation id for the '<em>Get EPackage</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL___GET_EPACKAGE = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Metamodel</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command Itf</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getComputePropertyValueCommandItf()
+ * @generated
+ */
+ int COMPUTE_PROPERTY_VALUE_COMMAND_ITF = 12;
+
+ /**
+ * The number of structural features of the '<em>Compute Property Value Command Itf</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPUTE_PROPERTY_VALUE_COMMAND_ITF_FEATURE_COUNT = 0;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPUTE_PROPERTY_VALUE_COMMAND_ITF___GET_CMD_VALUE = 0;
+
+ /**
+ * The number of operations of the '<em>Compute Property Value Command Itf</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPUTE_PROPERTY_VALUE_COMMAND_ITF_OPERATION_COUNT = 1;
+
+ /**
+ * The number of structural features of the '<em>Type Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_INSTANCE_FEATURE_COUNT = COMPUTE_PROPERTY_VALUE_COMMAND_ITF_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_INSTANCE___GET_CMD_VALUE = COMPUTE_PROPERTY_VALUE_COMMAND_ITF___GET_CMD_VALUE;
+
+ /**
+ * The operation id for the '<em>Set Value From String</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING = COMPUTE_PROPERTY_VALUE_COMMAND_ITF_OPERATION_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Set Value From Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = COMPUTE_PROPERTY_VALUE_COMMAND_ITF_OPERATION_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Type Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_INSTANCE_OPERATION_COUNT = COMPUTE_PROPERTY_VALUE_COMMAND_ITF_OPERATION_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl <em>String To Property Index Map</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToPropertyIndexMap()
+ * @generated
+ */
+ int STRING_TO_PROPERTY_INDEX_MAP = 42;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl <em>Property Index</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyIndex()
+ * @generated
+ */
+ int PROPERTY_INDEX = 41;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl <em>Type Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTypeRegistry()
+ * @generated
+ */
+ int TYPE_REGISTRY = 13;
+
+ /**
+ * The feature id for the '<em><b>Types</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_REGISTRY__TYPES = 0;
+
+ /**
+ * The number of structural features of the '<em>Type Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_REGISTRY_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Type Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_REGISTRY_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl <em>String To Type Map</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToTypeMap()
+ * @generated
+ */
+ int STRING_TO_TYPE_MAP = 14;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_TYPE_MAP__VALUE = 0;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_TYPE_MAP__KEY = 1;
+
+ /**
+ * The number of structural features of the '<em>String To Type Map</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_TYPE_MAP_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>String To Type Map</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_TYPE_MAP_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl <em>Layer Descriptor Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerDescriptorRegistry()
+ * @generated
+ */
+ int LAYER_DESCRIPTOR_REGISTRY = 15;
+
+ /**
+ * The feature id for the '<em><b>Layer Descriptors</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS = 0;
+
+ /**
+ * The number of structural features of the '<em>Layer Descriptor Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_DESCRIPTOR_REGISTRY_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Layer Descriptor Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_DESCRIPTOR_REGISTRY_OPERATION_COUNT = 0;
+
+ /**
+ * The feature id for the '<em><b>Property Registry</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_DESCRIPTOR__PROPERTY_REGISTRY = 0;
+
+ /**
+ * The number of structural features of the '<em>Layer Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_DESCRIPTOR_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Layer Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_DESCRIPTOR_OPERATION_COUNT = 0;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_APPLICATION_FACTORY__APPLICATION = 0;
+
+ /**
+ * The number of structural features of the '<em>Layer Application Factory</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_APPLICATION_FACTORY_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Layer Application Factory</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_APPLICATION_FACTORY_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl <em>Property Setter Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertySetterRegistry()
+ * @generated
+ */
+ int PROPERTY_SETTER_REGISTRY = 18;
+
+ /**
+ * The feature id for the '<em><b>Property Setters</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS = 0;
+
+ /**
+ * The feature id for the '<em><b>Setter Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_REGISTRY__SETTER_MAP = 1;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_REGISTRY__APPLICATION = 2;
+
+ /**
+ * The number of structural features of the '<em>Property Setter Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_REGISTRY_FEATURE_COUNT = 3;
+
+ /**
+ * The operation id for the '<em>Get Property Setter</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__PROPERTY = 0;
+
+ /**
+ * The operation id for the '<em>Get Property Setter</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__STRING = 1;
+
+ /**
+ * The operation id for the '<em>Add Property Setter</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_REGISTRY___ADD_PROPERTY_SETTER__PROPERTYSETTER = 2;
+
+ /**
+ * The number of operations of the '<em>Property Setter Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_REGISTRY_OPERATION_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl <em>Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertySetter()
+ * @generated
+ */
+ int PROPERTY_SETTER = 19;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER__PROPERTY = 0;
+
+ /**
+ * The feature id for the '<em><b>Property Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER__PROPERTY_NAME = 1;
+
+ /**
+ * The number of structural features of the '<em>Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_FEATURE_COUNT = 2;
+
+ /**
+ * The operation id for the '<em>Set Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = 0;
+
+ /**
+ * The number of operations of the '<em>Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_SETTER_OPERATION_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl <em>String To Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToPropertySetter()
+ * @generated
+ */
+ int STRING_TO_PROPERTY_SETTER = 20;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_PROPERTY_SETTER__KEY = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_PROPERTY_SETTER__VALUE = 1;
+
+ /**
+ * The number of structural features of the '<em>String To Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_PROPERTY_SETTER_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>String To Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_PROPERTY_SETTER_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl <em>Abstract Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAbstractLayer()
+ * @generated
+ */
+ int ABSTRACT_LAYER = 28;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl <em>Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperator()
+ * @generated
+ */
+ int LAYER_OPERATOR = 25;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl <em>Abstract Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAbstractLayerOperator()
+ * @generated
+ */
+ int ABSTRACT_LAYER_OPERATOR = 24;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl <em>Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperatorDescriptor()
+ * @generated
+ */
+ int LAYER_OPERATOR_DESCRIPTOR = 22;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl <em>Property Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyOperator()
+ * @generated
+ */
+ int PROPERTY_OPERATOR = 23;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.DefaultPropertyOperatorImpl <em>Default Property Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.DefaultPropertyOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getDefaultPropertyOperator()
+ * @generated
+ */
+ int DEFAULT_PROPERTY_OPERATOR = 27;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl <em>Top Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTopLayerOperator()
+ * @generated
+ */
+ int TOP_LAYER_OPERATOR = 38;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl <em>Stacked Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStackedLayerOperator()
+ * @generated
+ */
+ int STACKED_LAYER_OPERATOR = 39;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomLayerOperatorImpl <em>Custom Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomLayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomLayerOperator()
+ * @generated
+ */
+ int CUSTOM_LAYER_OPERATOR = 40;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.SimpleLayerDescriptorImpl <em>Simple Layer Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.SimpleLayerDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getSimpleLayerDescriptor()
+ * @generated
+ */
+ int SIMPLE_LAYER_DESCRIPTOR = 43;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerDescriptorImpl <em>Reg Exp Layer Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getRegExpLayerDescriptor()
+ * @generated
+ */
+ int REG_EXP_LAYER_DESCRIPTOR = 44;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.NullInstanceImpl <em>Null Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.NullInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNullInstance()
+ * @generated
+ */
+ int NULL_INSTANCE = 45;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl <em>Reg Exp Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getRegExpLayer()
+ * @generated
+ */
+ int REG_EXP_LAYER = 46;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorImpl <em>Color</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getColor()
+ * @generated
+ */
+ int COLOR = 48;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl <em>Color Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getColorInstance()
+ * @generated
+ */
+ int COLOR_INSTANCE = 49;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl <em>Fill Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFillInstance()
+ * @generated
+ */
+ int FILL_INSTANCE = 50;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillImpl <em>Fill</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFill()
+ * @generated
+ */
+ int FILL = 51;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillPropertySetterImpl <em>Fill Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFillPropertySetter()
+ * @generated
+ */
+ int FILL_PROPERTY_SETTER = 52;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsValidPropertySetterImpl <em>Is Valid Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsValidPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsValidPropertySetter()
+ * @generated
+ */
+ int IS_VALID_PROPERTY_SETTER = 53;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.NullPropertySetterImpl <em>Null Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.NullPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNullPropertySetter()
+ * @generated
+ */
+ int NULL_PROPERTY_SETTER = 54;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineTypeImpl <em>Line Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LineTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLineType()
+ * @generated
+ */
+ int LINE_TYPE = 55;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl <em>Line Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLineInstance()
+ * @generated
+ */
+ int LINE_INSTANCE = 56;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LinePropertySetterImpl <em>Line Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LinePropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLinePropertySetter()
+ * @generated
+ */
+ int LINE_PROPERTY_SETTER = 57;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontPropertySetterImpl <em>Font Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontPropertySetter()
+ * @generated
+ */
+ int FONT_PROPERTY_SETTER = 58;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl <em>Font Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontInstance()
+ * @generated
+ */
+ int FONT_INSTANCE = 59;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontTypeImpl <em>Font Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontType()
+ * @generated
+ */
+ int FONT_TYPE = 60;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsVisiblePropertySetterImpl <em>Is Visible Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsVisiblePropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsVisiblePropertySetter()
+ * @generated
+ */
+ int IS_VISIBLE_PROPERTY_SETTER = 61;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl <em>Layer Operator Descriptor Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperatorDescriptorRegistry()
+ * @generated
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY = 21;
+
+ /**
+ * The feature id for the '<em><b>Descriptors</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS = 0;
+
+ /**
+ * The feature id for the '<em><b>Property Operators</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS = 1;
+
+ /**
+ * The feature id for the '<em><b>Property Collection Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE = 2;
+
+ /**
+ * The feature id for the '<em><b>Default Operator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR = 3;
+
+ /**
+ * The number of structural features of the '<em>Layer Operator Descriptor Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY_FEATURE_COUNT = 4;
+
+ /**
+ * The operation id for the '<em>Add Layer Operator Descriptor</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_LAYER_OPERATOR_DESCRIPTOR__LAYEROPERATORDESCRIPTOR = 0;
+
+ /**
+ * The operation id for the '<em>Get Layer Operator Descriptor</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_LAYER_OPERATOR_DESCRIPTOR__STRING = 1;
+
+ /**
+ * The operation id for the '<em>Add Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_PROPERTY_OPERATOR__PROPERTYOPERATOR = 2;
+
+ /**
+ * The operation id for the '<em>Get Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_PROPERTY_OPERATOR__STRING = 3;
+
+ /**
+ * The operation id for the '<em>Attach Operator To Descriptor</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ATTACH_OPERATOR_TO_DESCRIPTOR__PROPERTY_STRING_STRING = 4;
+
+ /**
+ * The operation id for the '<em>Create Layer Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___CREATE_LAYER_OPERATOR__STRING = 5;
+
+ /**
+ * The number of operations of the '<em>Layer Operator Descriptor Registry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_REGISTRY_OPERATION_COUNT = 6;
+
+ /**
+ * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR__NAME = 1;
+
+ /**
+ * The number of structural features of the '<em>Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = 2;
+
+ /**
+ * The operation id for the '<em>Get Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = 0;
+
+ /**
+ * The operation id for the '<em>Set Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = 1;
+
+ /**
+ * The operation id for the '<em>Create Layer Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = 2;
+
+ /**
+ * The operation id for the '<em>Set Property Collection Size</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = 3;
+
+ /**
+ * The number of operations of the '<em>Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = 4;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_OPERATOR__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Property Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_OPERATOR_FEATURE_COUNT = 1;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST = 0;
+
+ /**
+ * The number of operations of the '<em>Property Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_OPERATOR_OPERATION_COUNT = 1;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR__APPLICATION = LAYER_EXPRESSION__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR__NAME = LAYER_EXPRESSION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR__DESCRIPTION = LAYER_EXPRESSION__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR__IS_LAYER_ENABLED = LAYER_EXPRESSION__IS_LAYER_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR__IS_BRANCH_ENABLED = LAYER_EXPRESSION__IS_BRANCH_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR__OWNING_LAYERS_STACK = LAYER_EXPRESSION__OWNING_LAYERS_STACK;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR__STATE = LAYER_EXPRESSION__STATE;
+
+ /**
+ * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR__LAYERS = LAYER_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_FEATURE_COUNT = LAYER_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___GET_LAYERS_STACK = LAYER_EXPRESSION___GET_LAYERS_STACK;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___ENTER_ATTACHED_STATE = LAYER_EXPRESSION___ENTER_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___ATTACH = LAYER_EXPRESSION___ATTACH;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___DETACH = LAYER_EXPRESSION___DETACH;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___EXIT_ATTACHED_STATE = LAYER_EXPRESSION___EXIT_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Add Layer</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = LAYER_EXPRESSION_OPERATION_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATOR_OPERATION_COUNT = LAYER_EXPRESSION_OPERATION_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__APPLICATION = LAYER_OPERATOR__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__NAME = LAYER_OPERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__DESCRIPTION = LAYER_OPERATOR__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED = LAYER_OPERATOR__IS_LAYER_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__IS_BRANCH_ENABLED = LAYER_OPERATOR__IS_BRANCH_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__OWNING_LAYERS_STACK = LAYER_OPERATOR__OWNING_LAYERS_STACK;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__STATE = LAYER_OPERATOR__STATE;
+
+ /**
+ * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__LAYERS = LAYER_OPERATOR__LAYERS;
+
+ /**
+ * The feature id for the '<em><b>Layer Operator Descriptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR = LAYER_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Layer Operator Descriptor Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME = LAYER_OPERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Abstract Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR_FEATURE_COUNT = LAYER_OPERATOR_FEATURE_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___GET_LAYERS_STACK = LAYER_OPERATOR___GET_LAYERS_STACK;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___ENTER_ATTACHED_STATE = LAYER_OPERATOR___ENTER_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___ATTACH = LAYER_OPERATOR___ATTACH;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___DETACH = LAYER_OPERATOR___DETACH;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___EXIT_ATTACHED_STATE = LAYER_OPERATOR___EXIT_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Add Layer</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+
+ /**
+ * The operation id for the '<em>Is Descriptor Set</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET = LAYER_OPERATOR_OPERATION_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Reset Descriptor</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR = LAYER_OPERATOR_OPERATION_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Abstract Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATOR_OPERATION_COUNT = LAYER_OPERATOR_OPERATION_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFAULT_PROPERTY_OPERATOR__NAME = PROPERTY_OPERATOR__NAME;
+
+ /**
+ * The number of structural features of the '<em>Default Property Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFAULT_PROPERTY_OPERATOR_FEATURE_COUNT = PROPERTY_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFAULT_PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST = PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST;
+
+ /**
+ * The number of operations of the '<em>Default Property Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEFAULT_PROPERTY_OPERATOR_OPERATION_COUNT = PROPERTY_OPERATOR_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__APPLICATION = LAYER_EXPRESSION__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__NAME = LAYER_EXPRESSION__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__DESCRIPTION = LAYER_EXPRESSION__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__IS_LAYER_ENABLED_INTERNAL = LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__IS_LAYER_ENABLED = LAYER_EXPRESSION__IS_LAYER_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__IS_BRANCH_ENABLED = LAYER_EXPRESSION__IS_BRANCH_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__OWNING_LAYERS_STACK = LAYER_EXPRESSION__OWNING_LAYERS_STACK;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__STATE = LAYER_EXPRESSION__STATE;
+
+ /**
+ * The feature id for the '<em><b>Property Values</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__PROPERTY_VALUES = LAYER_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Property Value Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__PROPERTY_VALUE_MAP = LAYER_EXPRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Layer Descriptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__LAYER_DESCRIPTOR = LAYER_EXPRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Views</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__VIEWS = LAYER_EXPRESSION_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Attached Properties</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER__ATTACHED_PROPERTIES = LAYER_EXPRESSION_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Abstract Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_FEATURE_COUNT = LAYER_EXPRESSION_FEATURE_COUNT + 5;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___GET_LAYERS_STACK = LAYER_EXPRESSION___GET_LAYERS_STACK;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___ENTER_ATTACHED_STATE = LAYER_EXPRESSION___ENTER_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___ATTACH = LAYER_EXPRESSION___ATTACH;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___DETACH = LAYER_EXPRESSION___DETACH;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___EXIT_ATTACHED_STATE = LAYER_EXPRESSION___EXIT_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Add Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = LAYER_EXPRESSION_OPERATION_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Remove Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = LAYER_EXPRESSION_OPERATION_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Get Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY = LAYER_EXPRESSION_OPERATION_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Get Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING = LAYER_EXPRESSION_OPERATION_COUNT + 3;
+
+ /**
+ * The number of operations of the '<em>Abstract Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_LAYER_OPERATION_COUNT = LAYER_EXPRESSION_OPERATION_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_TYPE_INSTANCE_MAP__KEY = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_TYPE_INSTANCE_MAP__VALUE = 1;
+
+ /**
+ * The number of structural features of the '<em>String To Type Instance Map</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_TYPE_INSTANCE_MAP_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>String To Type Instance Map</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_TYPE_INSTANCE_MAP_OPERATION_COUNT = 0;
+
+ /**
+ * The feature id for the '<em><b>Elements</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER__ELEMENTS = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER__NAME = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Folder</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of operations of the '<em>Folder</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FOLDER_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_INSTANCE__VALUE = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Int Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+ /**
+ * The operation id for the '<em>Set Value From String</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+ /**
+ * The operation id for the '<em>Set Value From Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Int Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_INSTANCE__VALUE = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Boolean Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+ /**
+ * The operation id for the '<em>Set Value From String</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+ /**
+ * The operation id for the '<em>Set Value From Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Boolean Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_INSTANCE__VALUE = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>String Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+ /**
+ * The operation id for the '<em>Set Value From String</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+ /**
+ * The operation id for the '<em>Set Value From Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>String Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_TYPE__METAMODEL = TYPE__METAMODEL;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_TYPE__NAME = TYPE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+ /**
+ * The number of structural features of the '<em>Int Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+ /**
+ * The number of operations of the '<em>Int Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INT_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_TYPE__METAMODEL = TYPE__METAMODEL;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_TYPE__NAME = TYPE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+ /**
+ * The number of structural features of the '<em>Boolean Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+ /**
+ * The number of operations of the '<em>Boolean Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TYPE__METAMODEL = TYPE__METAMODEL;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TYPE__NAME = TYPE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+ /**
+ * The number of structural features of the '<em>String Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+ /**
+ * The number of operations of the '<em>String Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_TYPE__METAMODEL = TYPE__METAMODEL;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_TYPE__NAME = TYPE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Classifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_TYPE__CLASSIFIER = TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Custom Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+ /**
+ * The number of operations of the '<em>Custom Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__APPLICATION = ABSTRACT_LAYER_OPERATOR__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__NAME = ABSTRACT_LAYER_OPERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__DESCRIPTION = ABSTRACT_LAYER_OPERATOR__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__IS_LAYER_ENABLED = ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__IS_BRANCH_ENABLED = ABSTRACT_LAYER_OPERATOR__IS_BRANCH_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__OWNING_LAYERS_STACK = ABSTRACT_LAYER_OPERATOR__OWNING_LAYERS_STACK;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__STATE = ABSTRACT_LAYER_OPERATOR__STATE;
+
+ /**
+ * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__LAYERS = ABSTRACT_LAYER_OPERATOR__LAYERS;
+
+ /**
+ * The feature id for the '<em><b>Layer Operator Descriptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR = ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR;
+
+ /**
+ * The feature id for the '<em><b>Layer Operator Descriptor Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME = ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME;
+
+ /**
+ * The number of structural features of the '<em>Top Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_FEATURE_COUNT = ABSTRACT_LAYER_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___GET_LAYERS_STACK = ABSTRACT_LAYER_OPERATOR___GET_LAYERS_STACK;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___ENTER_ATTACHED_STATE = ABSTRACT_LAYER_OPERATOR___ENTER_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___ATTACH = ABSTRACT_LAYER_OPERATOR___ATTACH;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___DETACH = ABSTRACT_LAYER_OPERATOR___DETACH;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___EXIT_ATTACHED_STATE = ABSTRACT_LAYER_OPERATOR___EXIT_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Add Layer</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = ABSTRACT_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+
+ /**
+ * The operation id for the '<em>Is Descriptor Set</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___IS_DESCRIPTOR_SET = ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET;
+
+ /**
+ * The operation id for the '<em>Reset Descriptor</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR___RESET_DESCRIPTOR = ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR;
+
+ /**
+ * The number of operations of the '<em>Top Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_OPERATION_COUNT = ABSTRACT_LAYER_OPERATOR_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__APPLICATION = ABSTRACT_LAYER_OPERATOR__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__NAME = ABSTRACT_LAYER_OPERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__DESCRIPTION = ABSTRACT_LAYER_OPERATOR__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__IS_LAYER_ENABLED = ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__IS_BRANCH_ENABLED = ABSTRACT_LAYER_OPERATOR__IS_BRANCH_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__OWNING_LAYERS_STACK = ABSTRACT_LAYER_OPERATOR__OWNING_LAYERS_STACK;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__STATE = ABSTRACT_LAYER_OPERATOR__STATE;
+
+ /**
+ * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__LAYERS = ABSTRACT_LAYER_OPERATOR__LAYERS;
+
+ /**
+ * The feature id for the '<em><b>Layer Operator Descriptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR = ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR;
+
+ /**
+ * The feature id for the '<em><b>Layer Operator Descriptor Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME = ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME;
+
+ /**
+ * The number of structural features of the '<em>Stacked Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_FEATURE_COUNT = ABSTRACT_LAYER_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___GET_LAYERS_STACK = ABSTRACT_LAYER_OPERATOR___GET_LAYERS_STACK;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___ENTER_ATTACHED_STATE = ABSTRACT_LAYER_OPERATOR___ENTER_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___ATTACH = ABSTRACT_LAYER_OPERATOR___ATTACH;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___DETACH = ABSTRACT_LAYER_OPERATOR___DETACH;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___EXIT_ATTACHED_STATE = ABSTRACT_LAYER_OPERATOR___EXIT_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Add Layer</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = ABSTRACT_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+
+ /**
+ * The operation id for the '<em>Is Descriptor Set</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___IS_DESCRIPTOR_SET = ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET;
+
+ /**
+ * The operation id for the '<em>Reset Descriptor</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR___RESET_DESCRIPTOR = ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR;
+
+ /**
+ * The number of operations of the '<em>Stacked Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_OPERATION_COUNT = ABSTRACT_LAYER_OPERATOR_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR__APPLICATION = LAYER_OPERATOR__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR__NAME = LAYER_OPERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR__DESCRIPTION = LAYER_OPERATOR__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR__IS_LAYER_ENABLED = LAYER_OPERATOR__IS_LAYER_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR__IS_BRANCH_ENABLED = LAYER_OPERATOR__IS_BRANCH_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR__OWNING_LAYERS_STACK = LAYER_OPERATOR__OWNING_LAYERS_STACK;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR__STATE = LAYER_OPERATOR__STATE;
+
+ /**
+ * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR__LAYERS = LAYER_OPERATOR__LAYERS;
+
+ /**
+ * The number of structural features of the '<em>Custom Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR_FEATURE_COUNT = LAYER_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___GET_LAYERS_STACK = LAYER_OPERATOR___GET_LAYERS_STACK;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___ENTER_ATTACHED_STATE = LAYER_OPERATOR___ENTER_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___ATTACH = LAYER_OPERATOR___ATTACH;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___DETACH = LAYER_OPERATOR___DETACH;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___EXIT_ATTACHED_STATE = LAYER_OPERATOR___EXIT_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Add Layer</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+
+ /**
+ * The number of operations of the '<em>Custom Layer Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_LAYER_OPERATOR_OPERATION_COUNT = LAYER_OPERATOR_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_INDEX__PROPERTY = 0;
+
+ /**
+ * The feature id for the '<em><b>Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_INDEX__INDEX = 1;
+
+ /**
+ * The number of structural features of the '<em>Property Index</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_INDEX_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Property Index</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_INDEX_OPERATION_COUNT = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_PROPERTY_INDEX_MAP__VALUE = 0;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_PROPERTY_INDEX_MAP__KEY = 1;
+
+ /**
+ * The number of structural features of the '<em>String To Property Index Map</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_PROPERTY_INDEX_MAP_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>String To Property Index Map</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_TO_PROPERTY_INDEX_MAP_OPERATION_COUNT = 0;
+
+ /**
+ * The feature id for the '<em><b>Property Registry</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_LAYER_DESCRIPTOR__PROPERTY_REGISTRY = LAYER_DESCRIPTOR__PROPERTY_REGISTRY;
+
+ /**
+ * The number of structural features of the '<em>Simple Layer Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_LAYER_DESCRIPTOR_FEATURE_COUNT = LAYER_DESCRIPTOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Simple Layer Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_LAYER_DESCRIPTOR_OPERATION_COUNT = LAYER_DESCRIPTOR_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Property Registry</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER_DESCRIPTOR__PROPERTY_REGISTRY = LAYER_DESCRIPTOR__PROPERTY_REGISTRY;
+
+ /**
+ * The number of structural features of the '<em>Reg Exp Layer Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER_DESCRIPTOR_FEATURE_COUNT = LAYER_DESCRIPTOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Reg Exp Layer Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER_DESCRIPTOR_OPERATION_COUNT = LAYER_DESCRIPTOR_OPERATION_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Null Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+ /**
+ * The operation id for the '<em>Set Value From String</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+ /**
+ * The operation id for the '<em>Set Value From Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+ /**
+ * The operation id for the '<em>Get Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_INSTANCE___GET_INSTANCE = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Null Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__APPLICATION = ABSTRACT_LAYER__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__NAME = ABSTRACT_LAYER__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__DESCRIPTION = ABSTRACT_LAYER__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER__IS_LAYER_ENABLED_INTERNAL;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__IS_LAYER_ENABLED = ABSTRACT_LAYER__IS_LAYER_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__IS_BRANCH_ENABLED = ABSTRACT_LAYER__IS_BRANCH_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__OWNING_LAYERS_STACK = ABSTRACT_LAYER__OWNING_LAYERS_STACK;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__STATE = ABSTRACT_LAYER__STATE;
+
+ /**
+ * The feature id for the '<em><b>Property Values</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__PROPERTY_VALUES = ABSTRACT_LAYER__PROPERTY_VALUES;
+
+ /**
+ * The feature id for the '<em><b>Property Value Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__PROPERTY_VALUE_MAP = ABSTRACT_LAYER__PROPERTY_VALUE_MAP;
+
+ /**
+ * The feature id for the '<em><b>Layer Descriptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__LAYER_DESCRIPTOR = ABSTRACT_LAYER__LAYER_DESCRIPTOR;
+
+ /**
+ * The feature id for the '<em><b>Views</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__VIEWS = ABSTRACT_LAYER__VIEWS;
+
+ /**
+ * The feature id for the '<em><b>Attached Properties</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__ATTACHED_PROPERTIES = ABSTRACT_LAYER__ATTACHED_PROPERTIES;
+
+ /**
+ * The feature id for the '<em><b>Expr</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__EXPR = ABSTRACT_LAYER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Language</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__LANGUAGE = ABSTRACT_LAYER_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Is Domain Changed Event Dependant</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT = ABSTRACT_LAYER_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Domain Changed Event Level</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL = ABSTRACT_LAYER_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Is Diagram Changed Event Dependant</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT = ABSTRACT_LAYER_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Diagram Changed Event Level</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL = ABSTRACT_LAYER_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Expression Context Object Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE = ABSTRACT_LAYER_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Reg Exp Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER_FEATURE_COUNT = ABSTRACT_LAYER_FEATURE_COUNT + 7;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___GET_LAYERS_STACK = ABSTRACT_LAYER___GET_LAYERS_STACK;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___ENTER_ATTACHED_STATE = ABSTRACT_LAYER___ENTER_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___ATTACH = ABSTRACT_LAYER___ATTACH;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___DETACH = ABSTRACT_LAYER___DETACH;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___EXIT_ATTACHED_STATE = ABSTRACT_LAYER___EXIT_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Add Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Remove Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___GET_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___GET_PROPERTY_INSTANCE__STRING = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING;
+
+ /**
+ * The operation id for the '<em>Activate</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___ACTIVATE__ABSTRACTLAYEROPERATOR = ABSTRACT_LAYER_OPERATION_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Deactivate</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___DEACTIVATE__ABSTRACTLAYEROPERATOR = ABSTRACT_LAYER_OPERATION_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Is Derived View</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___IS_DERIVED_VIEW__VIEW = ABSTRACT_LAYER_OPERATION_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Attach Derived View</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___ATTACH_DERIVED_VIEW__VIEW = ABSTRACT_LAYER_OPERATION_COUNT + 3;
+
+ /**
+ * The operation id for the '<em>Attach Derived Views</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___ATTACH_DERIVED_VIEWS__ELIST = ABSTRACT_LAYER_OPERATION_COUNT + 4;
+
+ /**
+ * The operation id for the '<em>Attach Derived Views</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___ATTACH_DERIVED_VIEWS = ABSTRACT_LAYER_OPERATION_COUNT + 5;
+
+ /**
+ * The operation id for the '<em>Lookup Derived Views</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER___LOOKUP_DERIVED_VIEWS__ELIST = ABSTRACT_LAYER_OPERATION_COUNT + 6;
+
+ /**
+ * The number of operations of the '<em>Reg Exp Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REG_EXP_LAYER_OPERATION_COUNT = ABSTRACT_LAYER_OPERATION_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__APPLICATION = ABSTRACT_LAYER__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__NAME = ABSTRACT_LAYER__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__DESCRIPTION = ABSTRACT_LAYER__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER__IS_LAYER_ENABLED_INTERNAL;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__IS_LAYER_ENABLED = ABSTRACT_LAYER__IS_LAYER_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__IS_BRANCH_ENABLED = ABSTRACT_LAYER__IS_BRANCH_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__OWNING_LAYERS_STACK = ABSTRACT_LAYER__OWNING_LAYERS_STACK;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__STATE = ABSTRACT_LAYER__STATE;
+
+ /**
+ * The feature id for the '<em><b>Property Values</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__PROPERTY_VALUES = ABSTRACT_LAYER__PROPERTY_VALUES;
+
+ /**
+ * The feature id for the '<em><b>Property Value Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__PROPERTY_VALUE_MAP = ABSTRACT_LAYER__PROPERTY_VALUE_MAP;
+
+ /**
+ * The feature id for the '<em><b>Layer Descriptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__LAYER_DESCRIPTOR = ABSTRACT_LAYER__LAYER_DESCRIPTOR;
+
+ /**
+ * The feature id for the '<em><b>Views</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__VIEWS = ABSTRACT_LAYER__VIEWS;
+
+ /**
+ * The feature id for the '<em><b>Attached Properties</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER__ATTACHED_PROPERTIES = ABSTRACT_LAYER__ATTACHED_PROPERTIES;
+
+ /**
+ * The number of structural features of the '<em>Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_FEATURE_COUNT = ABSTRACT_LAYER_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___GET_LAYERS_STACK = ABSTRACT_LAYER___GET_LAYERS_STACK;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___ENTER_ATTACHED_STATE = ABSTRACT_LAYER___ENTER_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___ATTACH = ABSTRACT_LAYER___ATTACH;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___DETACH = ABSTRACT_LAYER___DETACH;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___EXIT_ATTACHED_STATE = ABSTRACT_LAYER___EXIT_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Add Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Remove Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___GET_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER___GET_PROPERTY_INSTANCE__STRING = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING;
+
+ /**
+ * The number of operations of the '<em>Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LAYER_OPERATION_COUNT = ABSTRACT_LAYER_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR__METAMODEL = TYPE__METAMODEL;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR__NAME = TYPE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR__DESCRIPTION = TYPE__DESCRIPTION;
+
+ /**
+ * The number of structural features of the '<em>Color</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+ /**
+ * The number of operations of the '<em>Color</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR_INSTANCE__VALUE = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Color Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+ /**
+ * The operation id for the '<em>Set Value From String</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+ /**
+ * The operation id for the '<em>Set Value From Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Color Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COLOR_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Transparency</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_INSTANCE__TRANSPARENCY = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Fill Color</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_INSTANCE__FILL_COLOR = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Fill Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+ /**
+ * The operation id for the '<em>Set Value From String</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+ /**
+ * The operation id for the '<em>Set Value From Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Fill Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL__METAMODEL = TYPE__METAMODEL;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL__NAME = TYPE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL__DESCRIPTION = TYPE__DESCRIPTION;
+
+ /**
+ * The number of structural features of the '<em>Fill</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+ /**
+ * The number of operations of the '<em>Fill</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+ /**
+ * The feature id for the '<em><b>Property Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+ /**
+ * The number of structural features of the '<em>Fill Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Set Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Fill Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILL_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VALID_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+ /**
+ * The feature id for the '<em><b>Property Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VALID_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+ /**
+ * The number of structural features of the '<em>Is Valid Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VALID_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Set Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VALID_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Is Valid Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VALID_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+ /**
+ * The feature id for the '<em><b>Property Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+ /**
+ * The number of structural features of the '<em>Null Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Set Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Null Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NULL_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_TYPE__METAMODEL = TYPE__METAMODEL;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_TYPE__NAME = TYPE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+ /**
+ * The number of structural features of the '<em>Line Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+ /**
+ * The number of operations of the '<em>Line Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Line Color</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_INSTANCE__LINE_COLOR = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Line With</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_INSTANCE__LINE_WITH = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Line Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+ /**
+ * The operation id for the '<em>Set Value From String</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+ /**
+ * The operation id for the '<em>Set Value From Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Line Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+ /**
+ * The feature id for the '<em><b>Property Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+ /**
+ * The number of structural features of the '<em>Line Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Set Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Line Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LINE_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+ /**
+ * The feature id for the '<em><b>Property Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+ /**
+ * The number of structural features of the '<em>Font Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Set Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Font Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Font Color</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_INSTANCE__FONT_COLOR = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Font Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_INSTANCE__FONT_NAME = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Font Heigh</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_INSTANCE__FONT_HEIGH = TYPE_INSTANCE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Bold</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_INSTANCE__BOLD = TYPE_INSTANCE_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Font Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 4;
+
+ /**
+ * The operation id for the '<em>Get Cmd Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+ /**
+ * The operation id for the '<em>Set Value From String</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+ /**
+ * The operation id for the '<em>Set Value From Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Font Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_TYPE__METAMODEL = TYPE__METAMODEL;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_TYPE__NAME = TYPE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+ /**
+ * The number of structural features of the '<em>Font Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Create Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+ /**
+ * The number of operations of the '<em>Font Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FONT_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VISIBLE_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+ /**
+ * The feature id for the '<em><b>Property Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VISIBLE_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+ /**
+ * The number of structural features of the '<em>Is Visible Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VISIBLE_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Set Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VISIBLE_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Is Visible Property Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_VISIBLE_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl <em>Top Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTopLayerOperatorDescriptor()
+ * @generated
+ */
+ int TOP_LAYER_OPERATOR_DESCRIPTOR = 62;
+
+ /**
+ * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_DESCRIPTOR__NAME = LAYER_OPERATOR_DESCRIPTOR__NAME;
+
+ /**
+ * The number of structural features of the '<em>Top Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Set Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR;
+
+ /**
+ * The operation id for the '<em>Create Layer Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR;
+
+ /**
+ * The operation id for the '<em>Set Property Collection Size</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR;
+
+ /**
+ * The number of operations of the '<em>Top Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TOP_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl <em>Stacked Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStackedLayerOperatorDescriptor()
+ * @generated
+ */
+ int STACKED_LAYER_OPERATOR_DESCRIPTOR = 63;
+
+ /**
+ * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME = LAYER_OPERATOR_DESCRIPTOR__NAME;
+
+ /**
+ * The number of structural features of the '<em>Stacked Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Set Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR;
+
+ /**
+ * The operation id for the '<em>Create Layer Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR;
+
+ /**
+ * The operation id for the '<em>Set Property Collection Size</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR;
+
+ /**
+ * The number of operations of the '<em>Stacked Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl <em>Custom Property Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomPropertyOperator()
+ * @generated
+ */
+ int CUSTOM_PROPERTY_OPERATOR = 64;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_PROPERTY_OPERATOR__NAME = PROPERTY_OPERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Classname</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_PROPERTY_OPERATOR__CLASSNAME = PROPERTY_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Operator Instance</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE = PROPERTY_OPERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Class Bundle ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID = PROPERTY_OPERATOR_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Custom Property Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_PROPERTY_OPERATOR_FEATURE_COUNT = PROPERTY_OPERATOR_FEATURE_COUNT + 3;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST = PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST;
+
+ /**
+ * The operation id for the '<em>Reset Operator Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_PROPERTY_OPERATOR___RESET_OPERATOR_INSTANCE = PROPERTY_OPERATOR_OPERATION_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Custom Property Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CUSTOM_PROPERTY_OPERATOR_OPERATION_COUNT = PROPERTY_OPERATOR_OPERATION_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AndStackedLayerOperatorDescriptorImpl <em>And Stacked Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AndStackedLayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAndStackedLayerOperatorDescriptor()
+ * @generated
+ */
+ int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR = 65;
+
+ /**
+ * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME = STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME;
+
+ /**
+ * The number of structural features of the '<em>And Stacked Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Set Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR;
+
+ /**
+ * The operation id for the '<em>Create Layer Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR;
+
+ /**
+ * The operation id for the '<em>Set Property Collection Size</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR;
+
+ /**
+ * The number of operations of the '<em>And Stacked Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.OrStackedLayerOperatorDescriptorImpl <em>Or Stacked Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.OrStackedLayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getOrStackedLayerOperatorDescriptor()
+ * @generated
+ */
+ int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR = 66;
+
+ /**
+ * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME = STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME;
+
+ /**
+ * The number of structural features of the '<em>Or Stacked Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Set Property Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR;
+
+ /**
+ * The operation id for the '<em>Create Layer Operator</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR;
+
+ /**
+ * The operation id for the '<em>Set Property Collection Size</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR;
+
+ /**
+ * The number of operations of the '<em>Or Stacked Layer Operator Descriptor</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsAbstractUmlSetterImpl <em>Is Abstract Uml Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsAbstractUmlSetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsAbstractUmlSetter()
+ * @generated
+ */
+ int IS_ABSTRACT_UML_SETTER = 67;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_ABSTRACT_UML_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+ /**
+ * The feature id for the '<em><b>Property Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_ABSTRACT_UML_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+ /**
+ * The number of structural features of the '<em>Is Abstract Uml Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_ABSTRACT_UML_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Set Value</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_ABSTRACT_UML_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+ /**
+ * The number of operations of the '<em>Is Abstract Uml Setter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_ABSTRACT_UML_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AllViewsDerivedLayerImpl <em>All Views Derived Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AllViewsDerivedLayerImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAllViewsDerivedLayer()
+ * @generated
+ */
+ int ALL_VIEWS_DERIVED_LAYER = 68;
+
+ /**
+ * The feature id for the '<em><b>Application</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__APPLICATION = ABSTRACT_LAYER__APPLICATION;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__NAME = ABSTRACT_LAYER__NAME;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__DESCRIPTION = ABSTRACT_LAYER__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER__IS_LAYER_ENABLED_INTERNAL;
+
+ /**
+ * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__IS_LAYER_ENABLED = ABSTRACT_LAYER__IS_LAYER_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__IS_BRANCH_ENABLED = ABSTRACT_LAYER__IS_BRANCH_ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__OWNING_LAYERS_STACK = ABSTRACT_LAYER__OWNING_LAYERS_STACK;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__STATE = ABSTRACT_LAYER__STATE;
+
+ /**
+ * The feature id for the '<em><b>Property Values</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__PROPERTY_VALUES = ABSTRACT_LAYER__PROPERTY_VALUES;
+
+ /**
+ * The feature id for the '<em><b>Property Value Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__PROPERTY_VALUE_MAP = ABSTRACT_LAYER__PROPERTY_VALUE_MAP;
+
+ /**
+ * The feature id for the '<em><b>Layer Descriptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__LAYER_DESCRIPTOR = ABSTRACT_LAYER__LAYER_DESCRIPTOR;
+
+ /**
+ * The feature id for the '<em><b>Views</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__VIEWS = ABSTRACT_LAYER__VIEWS;
+
+ /**
+ * The feature id for the '<em><b>Attached Properties</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER__ATTACHED_PROPERTIES = ABSTRACT_LAYER__ATTACHED_PROPERTIES;
+
+ /**
+ * The number of structural features of the '<em>All Views Derived Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER_FEATURE_COUNT = ABSTRACT_LAYER_FEATURE_COUNT + 0;
+
+ /**
+ * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+ /**
+ * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+ /**
+ * The operation id for the '<em>Get Layers Stack</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___GET_LAYERS_STACK = ABSTRACT_LAYER___GET_LAYERS_STACK;
+
+ /**
+ * The operation id for the '<em>Enter Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___ENTER_ATTACHED_STATE = ABSTRACT_LAYER___ENTER_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Attach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___ATTACH = ABSTRACT_LAYER___ATTACH;
+
+ /**
+ * The operation id for the '<em>Detach</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___DETACH = ABSTRACT_LAYER___DETACH;
+
+ /**
+ * The operation id for the '<em>Exit Attached State</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___EXIT_ATTACHED_STATE = ABSTRACT_LAYER___EXIT_ATTACHED_STATE;
+
+ /**
+ * The operation id for the '<em>Add Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Remove Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___GET_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY;
+
+ /**
+ * The operation id for the '<em>Get Property Instance</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER___GET_PROPERTY_INSTANCE__STRING = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING;
+
+ /**
+ * The number of operations of the '<em>All Views Derived Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ALL_VIEWS_DERIVED_LAYER_OPERATION_COUNT = ABSTRACT_LAYER_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState <em>Layer State</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerState()
+ * @generated
+ */
+ int LAYER_STATE = 69;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel <em>Event Level</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getEventLevel()
+ * @generated
+ */
+ int EVENT_LEVEL = 70;
+
+ /**
+ * The meta object id for the '<em>String</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getString()
+ * @generated
+ */
+ int STRING = 71;
+
+ /**
+ * The meta object id for the '<em>boolean</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getboolean()
+ * @generated
+ */
+ int BOOLEAN = 72;
+
+ /**
+ * The meta object id for the '<em>EPackage</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getEPackage()
+ * @generated
+ */
+ int EPACKAGE = 73;
+
+ /**
+ * The meta object id for the '<em>Not Found Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.NotFoundException
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNotFoundException()
+ * @generated
+ */
+ int NOT_FOUND_EXCEPTION = 77;
+
+ /**
+ * The meta object id for the '<em>Compute Property Value Command</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getComputePropertyValueCommand()
+ * @generated
+ */
+ int COMPUTE_PROPERTY_VALUE_COMMAND = 78;
+
+ /**
+ * The meta object id for the '<em>Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.LayersException
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersException()
+ * @generated
+ */
+ int LAYERS_EXCEPTION = 74;
+
+ /**
+ * The meta object id for the '<em>int</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getint()
+ * @generated
+ */
+ int INT = 75;
+
+
+ /**
+ * The meta object id for the '<em>Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Object
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getObject()
+ * @generated
+ */
+ int OBJECT = 79;
+
+
+ /**
+ * The meta object id for the '<em>Custom Property Opertor Instance</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomPropertyOpertorInstance()
+ * @generated
+ */
+ int CUSTOM_PROPERTY_OPERTOR_INSTANCE = 80;
+
+ /**
+ * The meta object id for the '<em>Bad State Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.BadStateException
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBadStateException()
+ * @generated
+ */
+ int BAD_STATE_EXCEPTION = 76;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle <em>Layer Named Style</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Named Style</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle
+ * @generated
+ */
+ EClass getLayerNamedStyle();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle#getLayersStack <em>Layers Stack</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Layers Stack</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle#getLayersStack()
+ * @see #getLayerNamedStyle()
+ * @generated
+ */
+ EReference getLayerNamedStyle_LayersStack();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack <em>Stack</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Stack</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack
+ * @generated
+ */
+ EClass getLayersStack();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getLayers <em>Layers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Layers</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getLayers()
+ * @see #getLayersStack()
+ * @generated
+ */
+ EReference getLayersStack_Layers();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getName()
+ * @see #getLayersStack()
+ * @generated
+ */
+ EAttribute getLayersStack_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDescription <em>Description</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDescription()
+ * @see #getLayersStack()
+ * @generated
+ */
+ EAttribute getLayersStack_Description();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDiagram <em>Diagram</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Diagram</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDiagram()
+ * @see #getLayersStack()
+ * @generated
+ */
+ EReference getLayersStack_Diagram();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getState <em>State</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>State</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getState()
+ * @see #getLayersStack()
+ * @generated
+ */
+ EAttribute getLayersStack_State();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Compute Property Value Command</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getLayersStack__GetComputePropertyValueCommand__View_Property();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ EOperation getLayersStack__GetPropertiesComputePropertyValueCommand__View_EList();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Views Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getLayersStack__GetViewsComputePropertyValueCommand__EList_Property();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation() <em>Start After Creation</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Start After Creation</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation()
+ * @generated
+ */
+ EOperation getLayersStack__StartAfterCreation();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers() <em>Attach Layers</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Attach Layers</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers()
+ * @generated
+ */
+ EOperation getLayersStack__AttachLayers();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach() <em>Attach</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Attach</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach()
+ * @generated
+ */
+ EOperation getLayersStack__Attach();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach() <em>Detach</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Detach</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach()
+ * @generated
+ */
+ EOperation getLayersStack__Detach();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState() <em>Enter Attached State</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Enter Attached State</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState()
+ * @generated
+ */
+ EOperation getLayersStack__EnterAttachedState();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState() <em>Exit Attached State</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Exit Attached State</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState()
+ * @generated
+ */
+ EOperation getLayersStack__ExitAttachedState();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Layer <em>Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Layer
+ * @generated
+ */
+ EClass getLayer();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Color <em>Color</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Color</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Color
+ * @generated
+ */
+ EClass getColor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance <em>Color Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Color Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance
+ * @generated
+ */
+ EClass getColorInstance();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance#getValue()
+ * @see #getColorInstance()
+ * @generated
+ */
+ EAttribute getColorInstance_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance <em>Fill Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Fill Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FillInstance
+ * @generated
+ */
+ EClass getFillInstance();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getTransparency <em>Transparency</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Transparency</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getTransparency()
+ * @see #getFillInstance()
+ * @generated
+ */
+ EAttribute getFillInstance_Transparency();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getFillColor <em>Fill Color</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Fill Color</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getFillColor()
+ * @see #getFillInstance()
+ * @generated
+ */
+ EReference getFillInstance_FillColor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Fill <em>Fill</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Fill</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Fill
+ * @generated
+ */
+ EClass getFill();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter <em>Fill Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Fill Property Setter</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter
+ * @generated
+ */
+ EClass getFillPropertySetter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter <em>Is Valid Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Is Valid Property Setter</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter
+ * @generated
+ */
+ EClass getIsValidPropertySetter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter <em>Null Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Null Property Setter</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter
+ * @generated
+ */
+ EClass getNullPropertySetter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineType <em>Line Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Line Type</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LineType
+ * @generated
+ */
+ EClass getLineType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance <em>Line Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Line Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LineInstance
+ * @generated
+ */
+ EClass getLineInstance();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineColor <em>Line Color</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Line Color</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineColor()
+ * @see #getLineInstance()
+ * @generated
+ */
+ EAttribute getLineInstance_LineColor();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineWith <em>Line With</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Line With</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineWith()
+ * @see #getLineInstance()
+ * @generated
+ */
+ EAttribute getLineInstance_LineWith();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter <em>Line Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Line Property Setter</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter
+ * @generated
+ */
+ EClass getLinePropertySetter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter <em>Font Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Font Property Setter</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter
+ * @generated
+ */
+ EClass getFontPropertySetter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance <em>Font Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Font Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance
+ * @generated
+ */
+ EClass getFontInstance();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontColor <em>Font Color</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Font Color</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontColor()
+ * @see #getFontInstance()
+ * @generated
+ */
+ EAttribute getFontInstance_FontColor();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontName <em>Font Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Font Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontName()
+ * @see #getFontInstance()
+ * @generated
+ */
+ EAttribute getFontInstance_FontName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontHeigh <em>Font Heigh</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Font Heigh</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontHeigh()
+ * @see #getFontInstance()
+ * @generated
+ */
+ EAttribute getFontInstance_FontHeigh();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#isBold <em>Bold</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Bold</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#isBold()
+ * @see #getFontInstance()
+ * @generated
+ */
+ EAttribute getFontInstance_Bold();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontType <em>Font Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Font Type</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontType
+ * @generated
+ */
+ EClass getFontType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter <em>Is Visible Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Is Visible Property Setter</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter
+ * @generated
+ */
+ EClass getIsVisiblePropertySetter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Operator Descriptor Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry
+ * @generated
+ */
+ EClass getLayerOperatorDescriptorRegistry();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDescriptors <em>Descriptors</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Descriptors</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDescriptors()
+ * @see #getLayerOperatorDescriptorRegistry()
+ * @generated
+ */
+ EReference getLayerOperatorDescriptorRegistry_Descriptors();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperators <em>Property Operators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Property Operators</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperators()
+ * @see #getLayerOperatorDescriptorRegistry()
+ * @generated
+ */
+ EReference getLayerOperatorDescriptorRegistry_PropertyOperators();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyCollectionSize <em>Property Collection Size</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Property Collection Size</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyCollectionSize()
+ * @see #getLayerOperatorDescriptorRegistry()
+ * @generated
+ */
+ EAttribute getLayerOperatorDescriptorRegistry_PropertyCollectionSize();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDefaultOperator <em>Default Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Default Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDefaultOperator()
+ * @see #getLayerOperatorDescriptorRegistry()
+ * @generated
+ */
+ EReference getLayerOperatorDescriptorRegistry_DefaultOperator();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor) <em>Add Layer Operator Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Add Layer Operator Descriptor</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor)
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptorRegistry__AddLayerOperatorDescriptor__LayerOperatorDescriptor();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String) <em>Get Layer Operator Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Layer Operator Descriptor</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String)
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptorRegistry__GetLayerOperatorDescriptor__String();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Add Property Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Add Property Operator</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptorRegistry__AddPropertyOperator__PropertyOperator();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String) <em>Get Property Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Property Operator</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String)
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptorRegistry__GetPropertyOperator__String();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String) <em>Attach Operator To Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Attach Operator To Descriptor</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String)
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptorRegistry__AttachOperatorToDescriptor__Property_String_String();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String) <em>Create Layer Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Create Layer Operator</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String)
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptorRegistry__CreateLayerOperator__String();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor <em>Top Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Top Layer Operator Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor
+ * @generated
+ */
+ EClass getTopLayerOperatorDescriptor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor <em>Stacked Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Stacked Layer Operator Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor
+ * @generated
+ */
+ EClass getStackedLayerOperatorDescriptor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator <em>Custom Property Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Custom Property Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator
+ * @generated
+ */
+ EClass getCustomPropertyOperator();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassname <em>Classname</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Classname</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassname()
+ * @see #getCustomPropertyOperator()
+ * @generated
+ */
+ EAttribute getCustomPropertyOperator_Classname();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getOperatorInstance <em>Operator Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Operator Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getOperatorInstance()
+ * @see #getCustomPropertyOperator()
+ * @generated
+ */
+ EAttribute getCustomPropertyOperator_OperatorInstance();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassBundleID <em>Class Bundle ID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Class Bundle ID</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassBundleID()
+ * @see #getCustomPropertyOperator()
+ * @generated
+ */
+ EAttribute getCustomPropertyOperator_ClassBundleID();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance() <em>Reset Operator Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Reset Operator Instance</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance()
+ * @generated
+ */
+ EOperation getCustomPropertyOperator__ResetOperatorInstance();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor <em>And Stacked Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>And Stacked Layer Operator Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor
+ * @generated
+ */
+ EClass getAndStackedLayerOperatorDescriptor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor <em>Or Stacked Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Or Stacked Layer Operator Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor
+ * @generated
+ */
+ EClass getOrStackedLayerOperatorDescriptor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter <em>Is Abstract Uml Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Is Abstract Uml Setter</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter
+ * @generated
+ */
+ EClass getIsAbstractUmlSetter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer <em>All Views Derived Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>All Views Derived Layer</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer
+ * @generated
+ */
+ EClass getAllViewsDerivedLayer();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState <em>Layer State</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Layer State</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+ * @generated
+ */
+ EEnum getLayerState();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel <em>Event Level</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Event Level</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+ * @generated
+ */
+ EEnum getEventLevel();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance <em>Type Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance
+ * @generated
+ */
+ EClass getTypeInstance();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String) <em>Set Value From String</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Set Value From String</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String)
+ * @generated
+ */
+ EOperation getTypeInstance__SetValueFromString__String();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value From Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Set Value From Instance</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ * @generated
+ */
+ EOperation getTypeInstance__SetValueFromInstance__TypeInstance();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command Itf</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Compute Property Value Command Itf</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+ * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand"
+ * @generated
+ */
+ EClass getComputePropertyValueCommandItf();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Cmd Value</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+ * @generated
+ */
+ EOperation getComputePropertyValueCommandItf__GetCmdValue();
+
+ /**
+ * Returns the meta object for class '{@link java.util.Map.Entry <em>String To Type Instance Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String To Type Instance Map</em>'.
+ * @see java.util.Map.Entry
+ * @model keyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" keyRequired="true" keyOrdered="false"
+ * valueType="org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance" valueContainment="true" valueRequired="true" valueOrdered="false"
+ * @generated
+ */
+ EClass getStringToTypeInstanceMap();
+
+ /**
+ * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see java.util.Map.Entry
+ * @see #getStringToTypeInstanceMap()
+ * @generated
+ */
+ EAttribute getStringToTypeInstanceMap_Key();
+
+ /**
+ * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see java.util.Map.Entry
+ * @see #getStringToTypeInstanceMap()
+ * @generated
+ */
+ EReference getStringToTypeInstanceMap_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor <em>Layer Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor
+ * @generated
+ */
+ EClass getLayerDescriptor();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor#getPropertyRegistry <em>Property Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Property Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor#getPropertyRegistry()
+ * @see #getLayerDescriptor()
+ * @generated
+ */
+ EReference getLayerDescriptor_PropertyRegistry();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory <em>Layer Application Factory</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Application Factory</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory
+ * @generated
+ */
+ EClass getLayerApplicationFactory();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication <em>Application</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Application</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication()
+ * @see #getLayerApplicationFactory()
+ * @generated
+ */
+ EReference getLayerApplicationFactory_Application();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry <em>Property Setter Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property Setter Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry
+ * @generated
+ */
+ EClass getPropertySetterRegistry();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetters <em>Property Setters</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Property Setters</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetters()
+ * @see #getPropertySetterRegistry()
+ * @generated
+ */
+ EReference getPropertySetterRegistry_PropertySetters();
+
+ /**
+ * Returns the meta object for the map '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getSetterMap <em>Setter Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>Setter Map</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getSetterMap()
+ * @see #getPropertySetterRegistry()
+ * @generated
+ */
+ EReference getPropertySetterRegistry_SetterMap();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication <em>Application</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Application</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication()
+ * @see #getPropertySetterRegistry()
+ * @generated
+ */
+ EReference getPropertySetterRegistry_Application();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Setter</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Property Setter</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getPropertySetterRegistry__GetPropertySetter__Property();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String) <em>Get Property Setter</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Property Setter</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String)
+ * @generated
+ */
+ EOperation getPropertySetterRegistry__GetPropertySetter__String();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter) <em>Add Property Setter</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Add Property Setter</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter)
+ * @generated
+ */
+ EOperation getPropertySetterRegistry__AddPropertySetter__PropertySetter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter <em>Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property Setter</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter
+ * @generated
+ */
+ EClass getPropertySetter();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getProperty <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Property</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getProperty()
+ * @see #getPropertySetter()
+ * @generated
+ */
+ EReference getPropertySetter_Property();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getPropertyName <em>Property Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Property Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getPropertyName()
+ * @see #getPropertySetter()
+ * @generated
+ */
+ EAttribute getPropertySetter_PropertyName();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Set Value</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ * @generated
+ */
+ EOperation getPropertySetter__SetValue__View_TypeInstance();
+
+ /**
+ * Returns the meta object for class '{@link java.util.Map.Entry <em>String To Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String To Property Setter</em>'.
+ * @see java.util.Map.Entry
+ * @model keyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" keyRequired="true" keyOrdered="false"
+ * valueType="org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter" valueContainment="true" valueRequired="true" valueOrdered="false"
+ * @generated
+ */
+ EClass getStringToPropertySetter();
+
+ /**
+ * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see java.util.Map.Entry
+ * @see #getStringToPropertySetter()
+ * @generated
+ */
+ EAttribute getStringToPropertySetter_Key();
+
+ /**
+ * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see java.util.Map.Entry
+ * @see #getStringToPropertySetter()
+ * @generated
+ */
+ EReference getStringToPropertySetter_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer <em>Abstract Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Layer</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer
+ * @generated
+ */
+ EClass getAbstractLayer();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValues <em>Property Values</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Property Values</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValues()
+ * @see #getAbstractLayer()
+ * @generated
+ */
+ EReference getAbstractLayer_PropertyValues();
+
+ /**
+ * Returns the meta object for the map '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValueMap <em>Property Value Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>Property Value Map</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValueMap()
+ * @see #getAbstractLayer()
+ * @generated
+ */
+ EReference getAbstractLayer_PropertyValueMap();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getLayerDescriptor <em>Layer Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Layer Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getLayerDescriptor()
+ * @see #getAbstractLayer()
+ * @generated
+ */
+ EReference getAbstractLayer_LayerDescriptor();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getViews <em>Views</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Views</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getViews()
+ * @see #getAbstractLayer()
+ * @generated
+ */
+ EReference getAbstractLayer_Views();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties <em>Attached Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Attached Properties</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties()
+ * @see #getAbstractLayer()
+ * @generated
+ */
+ EReference getAbstractLayer_AttachedProperties();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Add Property Instance</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getAbstractLayer__AddPropertyInstance__Property();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Remove Property Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Remove Property Instance</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getAbstractLayer__RemovePropertyInstance__Property();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Property Instance</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getAbstractLayer__GetPropertyInstance__Property();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String) <em>Get Property Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Property Instance</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String)
+ * @generated
+ */
+ EOperation getAbstractLayer__GetPropertyInstance__String();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Property
+ * @generated
+ */
+ EClass getProperty();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getType()
+ * @see #getProperty()
+ * @generated
+ */
+ EReference getProperty_Type();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDefaultValue <em>Default Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Default Value</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getDefaultValue()
+ * @see #getProperty()
+ * @generated
+ */
+ EReference getProperty_DefaultValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getName()
+ * @see #getProperty()
+ * @generated
+ */
+ EAttribute getProperty_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDescription <em>Description</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getDescription()
+ * @see #getProperty()
+ * @generated
+ */
+ EAttribute getProperty_Description();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getIndex <em>Index</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Index</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getIndex()
+ * @see #getProperty()
+ * @generated
+ */
+ EAttribute getProperty_Index();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance() <em>Create Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Create Instance</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance()
+ * @generated
+ */
+ EOperation getProperty__CreateInstance();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FolderElement <em>Folder Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Folder Element</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FolderElement
+ * @generated
+ */
+ EClass getFolderElement();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression <em>Layer Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Expression</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression
+ * @generated
+ */
+ EClass getLayerExpression();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getName()
+ * @see #getLayerExpression()
+ * @generated
+ */
+ EAttribute getLayerExpression_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getDescription <em>Description</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getDescription()
+ * @see #getLayerExpression()
+ * @generated
+ */
+ EAttribute getLayerExpression_Description();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal <em>Is Layer Enabled Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Layer Enabled Internal</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal()
+ * @see #getLayerExpression()
+ * @generated
+ */
+ EAttribute getLayerExpression_IsLayerEnabledInternal();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabled <em>Is Layer Enabled</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Layer Enabled</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabled()
+ * @see #getLayerExpression()
+ * @generated
+ */
+ EAttribute getLayerExpression_IsLayerEnabled();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isBranchEnabled <em>Is Branch Enabled</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Branch Enabled</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isBranchEnabled()
+ * @see #getLayerExpression()
+ * @generated
+ */
+ EAttribute getLayerExpression_IsBranchEnabled();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getOwningLayersStack <em>Owning Layers Stack</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Owning Layers Stack</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getOwningLayersStack()
+ * @see #getLayerExpression()
+ * @generated
+ */
+ EReference getLayerExpression_OwningLayersStack();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getState <em>State</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>State</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getState()
+ * @see #getLayerExpression()
+ * @generated
+ */
+ EAttribute getLayerExpression_State();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Compute Property Value Command</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getLayerExpression__GetComputePropertyValueCommand__View_Property();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Views Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Views Compute Property Value Command</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getLayerExpression__GetViewsComputePropertyValueCommand__EList_Property();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Properties Compute Property Value Command</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ EOperation getLayerExpression__GetPropertiesComputePropertyValueCommand__View_EList();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack) <em>Attach To Layers Stack</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Attach To Layers Stack</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+ * @generated
+ */
+ EOperation getLayerExpression__AttachToLayersStack__LayersStack();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack() <em>Get Layers Stack</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Layers Stack</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack()
+ * @generated
+ */
+ EOperation getLayerExpression__GetLayersStack();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState() <em>Enter Attached State</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Enter Attached State</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState()
+ * @generated
+ */
+ EOperation getLayerExpression__EnterAttachedState();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach() <em>Attach</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Attach</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach()
+ * @generated
+ */
+ EOperation getLayerExpression__Attach();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach() <em>Detach</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Detach</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach()
+ * @generated
+ */
+ EOperation getLayerExpression__Detach();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState() <em>Exit Attached State</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Exit Attached State</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState()
+ * @generated
+ */
+ EOperation getLayerExpression__ExitAttachedState();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement <em>Application Dependant Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Application Dependant Element</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement
+ * @generated
+ */
+ EClass getApplicationDependantElement();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement#getApplication <em>Application</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Application</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement#getApplication()
+ * @see #getApplicationDependantElement()
+ * @generated
+ */
+ EReference getApplicationDependantElement_Application();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Type
+ * @generated
+ */
+ EClass getType();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getMetamodel <em>Metamodel</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Metamodel</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#getMetamodel()
+ * @see #getType()
+ * @generated
+ */
+ EReference getType_Metamodel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#getName()
+ * @see #getType()
+ * @generated
+ */
+ EAttribute getType_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getDescription <em>Description</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#getDescription()
+ * @see #getType()
+ * @generated
+ */
+ EAttribute getType_Description();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance() <em>Create Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Create Instance</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance()
+ * @generated
+ */
+ EOperation getType__CreateInstance();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel <em>Metamodel</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Metamodel</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel
+ * @generated
+ */
+ EClass getMetamodel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getName()
+ * @see #getMetamodel()
+ * @generated
+ */
+ EAttribute getMetamodel_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getDescription <em>Description</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getDescription()
+ * @see #getMetamodel()
+ * @generated
+ */
+ EAttribute getMetamodel_Description();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getNsuri <em>Nsuri</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Nsuri</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getNsuri()
+ * @see #getMetamodel()
+ * @generated
+ */
+ EAttribute getMetamodel_Nsuri();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getPluginID <em>Plugin ID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Plugin ID</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getPluginID()
+ * @see #getMetamodel()
+ * @generated
+ */
+ EAttribute getMetamodel_PluginID();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackageInstanceName <em>EPackage Instance Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>EPackage Instance Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackageInstanceName()
+ * @see #getMetamodel()
+ * @generated
+ */
+ EAttribute getMetamodel_EPackageInstanceName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#isTypeValid <em>Is Type Valid</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Type Valid</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#isTypeValid()
+ * @see #getMetamodel()
+ * @generated
+ */
+ EAttribute getMetamodel_IsTypeValid();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage() <em>Get EPackage</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get EPackage</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage()
+ * @generated
+ */
+ EOperation getMetamodel__GetEPackage();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder <em>Folder</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Folder</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Folder
+ * @generated
+ */
+ EClass getFolder();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getElements <em>Elements</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Elements</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Folder#getElements()
+ * @see #getFolder()
+ * @generated
+ */
+ EReference getFolder_Elements();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Folder#getName()
+ * @see #getFolder()
+ * @generated
+ */
+ EAttribute getFolder_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance <em>Int Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Int Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IntInstance
+ * @generated
+ */
+ EClass getIntInstance();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IntInstance#getValue()
+ * @see #getIntInstance()
+ * @generated
+ */
+ EAttribute getIntInstance_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance <em>Boolean Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance
+ * @generated
+ */
+ EClass getBooleanInstance();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance#isValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance#isValue()
+ * @see #getBooleanInstance()
+ * @generated
+ */
+ EAttribute getBooleanInstance_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance <em>String Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.StringInstance
+ * @generated
+ */
+ EClass getStringInstance();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.StringInstance#getValue()
+ * @see #getStringInstance()
+ * @generated
+ */
+ EAttribute getStringInstance_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntType <em>Int Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Int Type</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IntType
+ * @generated
+ */
+ EClass getIntType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType <em>Boolean Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Type</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanType
+ * @generated
+ */
+ EClass getBooleanType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringType <em>String Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String Type</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.StringType
+ * @generated
+ */
+ EClass getStringType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType <em>Custom Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Custom Type</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomType
+ * @generated
+ */
+ EClass getCustomType();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType#getClassifier <em>Classifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Classifier</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomType#getClassifier()
+ * @see #getCustomType()
+ * @generated
+ */
+ EAttribute getCustomType_Classifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication <em>Stack Application</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Stack Application</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication
+ * @generated
+ */
+ EClass getLayersStackApplication();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStacks <em>Layers Stacks</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Layers Stacks</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStacks()
+ * @see #getLayersStackApplication()
+ * @generated
+ */
+ EReference getLayersStackApplication_LayersStacks();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerStackRegistry <em>Layer Stack Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Layer Stack Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerStackRegistry()
+ * @see #getLayersStackApplication()
+ * @generated
+ */
+ EReference getLayersStackApplication_LayerStackRegistry();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertyRegistry <em>Property Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Property Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertyRegistry()
+ * @see #getLayersStackApplication()
+ * @generated
+ */
+ EReference getLayersStackApplication_PropertyRegistry();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerDescriptorRegistry <em>Layer Descriptor Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Layer Descriptor Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerDescriptorRegistry()
+ * @see #getLayersStackApplication()
+ * @generated
+ */
+ EReference getLayersStackApplication_LayerDescriptorRegistry();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory <em>Factory</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Factory</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory()
+ * @see #getLayersStackApplication()
+ * @generated
+ */
+ EReference getLayersStackApplication_Factory();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry <em>Property Setter Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Property Setter Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry()
+ * @see #getLayersStackApplication()
+ * @generated
+ */
+ EReference getLayersStackApplication_PropertySetterRegistry();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Layer Operator Descriptor Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerOperatorDescriptorRegistry()
+ * @see #getLayersStackApplication()
+ * @generated
+ */
+ EReference getLayersStackApplication_LayerOperatorDescriptorRegistry();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Get Layers Stack For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Layers Stack For</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ EOperation getLayersStackApplication__GetLayersStackFor__Diagram();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Remove Layers Stack For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Remove Layers Stack For</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ EOperation getLayersStackApplication__RemoveLayersStackFor__Diagram();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Is Layers Stack Attached For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Is Layers Stack Attached For</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ EOperation getLayersStackApplication__IsLayersStackAttachedFor__Diagram();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Create Layers Stack For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Create Layers Stack For</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ EOperation getLayersStackApplication__CreateLayersStackFor__Diagram();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Lookup Layers Stack For</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Lookup Layers Stack For</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+ * @generated
+ */
+ EOperation getLayersStackApplication__LookupLayersStackFor__Diagram();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry <em>Layer Stack Descriptor Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Stack Descriptor Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry
+ * @generated
+ */
+ EClass getLayerStackDescriptorRegistry();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry <em>Property Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry
+ * @generated
+ */
+ EClass getPropertyRegistry();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperties <em>Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Properties</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperties()
+ * @see #getPropertyRegistry()
+ * @generated
+ */
+ EReference getPropertyRegistry_Properties();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getTypeRegistry <em>Type Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getTypeRegistry()
+ * @see #getPropertyRegistry()
+ * @generated
+ */
+ EReference getPropertyRegistry_TypeRegistry();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount <em>Properties Count</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Properties Count</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount()
+ * @see #getPropertyRegistry()
+ * @generated
+ */
+ EAttribute getPropertyRegistry_PropertiesCount();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String) <em>Get Property Index</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Property Index</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String)
+ * @generated
+ */
+ EOperation getPropertyRegistry__GetPropertyIndex__String();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String) <em>Get Property</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Property</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String)
+ * @generated
+ */
+ EOperation getPropertyRegistry__GetProperty__String();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Add Property</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getPropertyRegistry__AddProperty__Property();
+
+ /**
+ * Returns the meta object for class '{@link java.util.Map.Entry <em>String To Property Index Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String To Property Index Map</em>'.
+ * @see java.util.Map.Entry
+ * @model features="value key"
+ * valueType="org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex" valueContainment="true" valueOrdered="false"
+ * keyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" keyRequired="true" keyOrdered="false"
+ * @generated
+ */
+ EClass getStringToPropertyIndexMap();
+
+ /**
+ * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see java.util.Map.Entry
+ * @see #getStringToPropertyIndexMap()
+ * @generated
+ */
+ EReference getStringToPropertyIndexMap_Value();
+
+ /**
+ * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see java.util.Map.Entry
+ * @see #getStringToPropertyIndexMap()
+ * @generated
+ */
+ EAttribute getStringToPropertyIndexMap_Key();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor <em>Simple Layer Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Simple Layer Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor
+ * @generated
+ */
+ EClass getSimpleLayerDescriptor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor <em>Reg Exp Layer Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Reg Exp Layer Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor
+ * @generated
+ */
+ EClass getRegExpLayerDescriptor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance <em>Null Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Null Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.NullInstance
+ * @generated
+ */
+ EClass getNullInstance();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance() <em>Get Instance</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Instance</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance()
+ * @generated
+ */
+ EOperation getNullInstance__GetInstance();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer <em>Reg Exp Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Reg Exp Layer</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer
+ * @generated
+ */
+ EClass getRegExpLayer();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpr <em>Expr</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Expr</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpr()
+ * @see #getRegExpLayer()
+ * @generated
+ */
+ EAttribute getRegExpLayer_Expr();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getLanguage <em>Language</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Language</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getLanguage()
+ * @see #getRegExpLayer()
+ * @generated
+ */
+ EAttribute getRegExpLayer_Language();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDomainChangedEventDependant <em>Is Domain Changed Event Dependant</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Domain Changed Event Dependant</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDomainChangedEventDependant()
+ * @see #getRegExpLayer()
+ * @generated
+ */
+ EAttribute getRegExpLayer_IsDomainChangedEventDependant();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDomainChangedEventLevel <em>Domain Changed Event Level</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Domain Changed Event Level</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDomainChangedEventLevel()
+ * @see #getRegExpLayer()
+ * @generated
+ */
+ EAttribute getRegExpLayer_DomainChangedEventLevel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDiagramChangedEventDependant <em>Is Diagram Changed Event Dependant</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Diagram Changed Event Dependant</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDiagramChangedEventDependant()
+ * @see #getRegExpLayer()
+ * @generated
+ */
+ EAttribute getRegExpLayer_IsDiagramChangedEventDependant();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDiagramChangedEventLevel <em>Diagram Changed Event Level</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Diagram Changed Event Level</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDiagramChangedEventLevel()
+ * @see #getRegExpLayer()
+ * @generated
+ */
+ EAttribute getRegExpLayer_DiagramChangedEventLevel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpressionContextObjectType <em>Expression Context Object Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Expression Context Object Type</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpressionContextObjectType()
+ * @see #getRegExpLayer()
+ * @generated
+ */
+ EAttribute getRegExpLayer_ExpressionContextObjectType();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Activate</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Activate</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator)
+ * @generated
+ */
+ EOperation getRegExpLayer__Activate__AbstractLayerOperator();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Deactivate</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Deactivate</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator)
+ * @generated
+ */
+ EOperation getRegExpLayer__Deactivate__AbstractLayerOperator();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Is Derived View</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Is Derived View</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View)
+ * @generated
+ */
+ EOperation getRegExpLayer__IsDerivedView__View();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Attach Derived View</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Attach Derived View</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View)
+ * @generated
+ */
+ EOperation getRegExpLayer__AttachDerivedView__View();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList) <em>Attach Derived Views</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Attach Derived Views</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ EOperation getRegExpLayer__AttachDerivedViews__EList();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews() <em>Attach Derived Views</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Attach Derived Views</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews()
+ * @generated
+ */
+ EOperation getRegExpLayer__AttachDerivedViews();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList) <em>Lookup Derived Views</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Lookup Derived Views</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ EOperation getRegExpLayer__LookupDerivedViews__EList();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex <em>Property Index</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property Index</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex
+ * @generated
+ */
+ EClass getPropertyIndex();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getProperty <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Property</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getProperty()
+ * @see #getPropertyIndex()
+ * @generated
+ */
+ EReference getPropertyIndex_Property();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getIndex <em>Index</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Index</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getIndex()
+ * @see #getPropertyIndex()
+ * @generated
+ */
+ EAttribute getPropertyIndex_Index();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry <em>Type Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry
+ * @generated
+ */
+ EClass getTypeRegistry();
+
+ /**
+ * Returns the meta object for the map '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry#getTypes <em>Types</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>Types</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry#getTypes()
+ * @see #getTypeRegistry()
+ * @generated
+ */
+ EReference getTypeRegistry_Types();
+
+ /**
+ * Returns the meta object for class '{@link java.util.Map.Entry <em>String To Type Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String To Type Map</em>'.
+ * @see java.util.Map.Entry
+ * @model features="value key"
+ * valueType="org.eclipse.papyrus.layers.stackmodel.layers.Type" valueContainment="true" valueRequired="true" valueOrdered="false"
+ * keyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" keyRequired="true" keyOrdered="false"
+ * @generated
+ */
+ EClass getStringToTypeMap();
+
+ /**
+ * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see java.util.Map.Entry
+ * @see #getStringToTypeMap()
+ * @generated
+ */
+ EReference getStringToTypeMap_Value();
+
+ /**
+ * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see java.util.Map.Entry
+ * @see #getStringToTypeMap()
+ * @generated
+ */
+ EAttribute getStringToTypeMap_Key();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry <em>Layer Descriptor Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Descriptor Registry</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry
+ * @generated
+ */
+ EClass getLayerDescriptorRegistry();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry#getLayerDescriptors <em>Layer Descriptors</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Layer Descriptors</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry#getLayerDescriptors()
+ * @see #getLayerDescriptorRegistry()
+ * @generated
+ */
+ EReference getLayerDescriptorRegistry_LayerDescriptors();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator <em>Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator
+ * @generated
+ */
+ EClass getLayerOperator();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator#getLayers <em>Layers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Layers</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator#getLayers()
+ * @see #getLayerOperator()
+ * @generated
+ */
+ EReference getLayerOperator_Layers();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer <em>Container</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Container</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer
+ * @generated
+ */
+ EClass getLayersContainer();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Add Layer</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression)
+ * @generated
+ */
+ EOperation getLayersContainer__AddLayer__LayerExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator <em>Abstract Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Layer Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator
+ * @generated
+ */
+ EClass getAbstractLayerOperator();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptor <em>Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Layer Operator Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptor()
+ * @see #getAbstractLayerOperator()
+ * @generated
+ */
+ EReference getAbstractLayerOperator_LayerOperatorDescriptor();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptorName <em>Layer Operator Descriptor Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Layer Operator Descriptor Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptorName()
+ * @see #getAbstractLayerOperator()
+ * @generated
+ */
+ EAttribute getAbstractLayerOperator_LayerOperatorDescriptorName();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet() <em>Is Descriptor Set</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Is Descriptor Set</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet()
+ * @generated
+ */
+ EOperation getAbstractLayerOperator__IsDescriptorSet();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor() <em>Reset Descriptor</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Reset Descriptor</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor()
+ * @generated
+ */
+ EOperation getAbstractLayerOperator__ResetDescriptor();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor <em>Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer Operator Descriptor</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+ * @generated
+ */
+ EClass getLayerOperatorDescriptor();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperators <em>Property Operators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Property Operators</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperators()
+ * @see #getLayerOperatorDescriptor()
+ * @generated
+ */
+ EReference getLayerOperatorDescriptor_PropertyOperators();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getName()
+ * @see #getLayerOperatorDescriptor()
+ * @generated
+ */
+ EAttribute getLayerOperatorDescriptor_Name();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Property Operator</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptor__GetPropertyOperator__Property();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Set Property Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Set Property Operator</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptor__SetPropertyOperator__Property_PropertyOperator();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator() <em>Create Layer Operator</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Create Layer Operator</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator()
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptor__CreateLayerOperator();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator) <em>Set Property Collection Size</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Set Property Collection Size</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator)
+ * @generated
+ */
+ EOperation getLayerOperatorDescriptor__SetPropertyCollectionSize__int_DefaultPropertyOperator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator <em>Property Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+ * @generated
+ */
+ EClass getPropertyOperator();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getName()
+ * @see #getPropertyOperator()
+ * @generated
+ */
+ EAttribute getPropertyOperator_Name();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList) <em>Get Compute Property Value Command</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Compute Property Value Command</em>' operation.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+ * @generated
+ */
+ EOperation getPropertyOperator__GetComputePropertyValueCommand__EList();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator <em>Default Property Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Default Property Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator
+ * @generated
+ */
+ EClass getDefaultPropertyOperator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator <em>Top Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Top Layer Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator
+ * @generated
+ */
+ EClass getTopLayerOperator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator <em>Stacked Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Stacked Layer Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator
+ * @generated
+ */
+ EClass getStackedLayerOperator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator <em>Custom Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Custom Layer Operator</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator
+ * @generated
+ */
+ EClass getCustomLayerOperator();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>String</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>String</em>'.
+ * @see java.lang.String
+ * @model instanceClass="java.lang.String"
+ * @generated
+ */
+ EDataType getString();
+
+ /**
+ * Returns the meta object for data type '<em>boolean</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>boolean</em>'.
+ * @model instanceClass="boolean"
+ * @generated
+ */
+ EDataType getboolean();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.emf.ecore.EPackage <em>EPackage</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>EPackage</em>'.
+ * @see org.eclipse.emf.ecore.EPackage
+ * @model instanceClass="org.eclipse.emf.ecore.EPackage"
+ * @generated
+ */
+ EDataType getEPackage();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.NotFoundException <em>Not Found Exception</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Not Found Exception</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.NotFoundException
+ * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.NotFoundException"
+ * extendedMetaData="baseType='LayersException'"
+ * @generated
+ */
+ EDataType getNotFoundException();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Compute Property Value Command</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+ * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand"
+ * @generated
+ */
+ EDataType getComputePropertyValueCommand();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.LayersException <em>Exception</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Exception</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.LayersException
+ * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.LayersException"
+ * @generated
+ */
+ EDataType getLayersException();
+
+ /**
+ * Returns the meta object for data type '<em>int</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>int</em>'.
+ * @model instanceClass="int"
+ * @generated
+ */
+ EDataType getint();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Object <em>Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Object</em>'.
+ * @see java.lang.Object
+ * @model instanceClass="java.lang.Object"
+ * @generated
+ */
+ EDataType getObject();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance <em>Custom Property Opertor Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Custom Property Opertor Instance</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance
+ * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance"
+ * @generated
+ */
+ EDataType getCustomPropertyOpertorInstance();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.BadStateException <em>Bad State Exception</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Bad State Exception</em>'.
+ * @see org.eclipse.papyrus.layers.stackmodel.BadStateException
+ * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.BadStateException"
+ * extendedMetaData="baseType='LayersException'"
+ * @generated
+ */
+ EDataType getBadStateException();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ LayersFactory getLayersFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl <em>Layer Named Style</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerNamedStyle()
+ * @generated
+ */
+ EClass LAYER_NAMED_STYLE = eINSTANCE.getLayerNamedStyle();
+
+ /**
+ * The meta object literal for the '<em><b>Layers Stack</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_NAMED_STYLE__LAYERS_STACK = eINSTANCE.getLayerNamedStyle_LayersStack();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl <em>Stack</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersStack()
+ * @generated
+ */
+ EClass LAYERS_STACK = eINSTANCE.getLayersStack();
+
+ /**
+ * The meta object literal for the '<em><b>Layers</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYERS_STACK__LAYERS = eINSTANCE.getLayersStack_Layers();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYERS_STACK__NAME = eINSTANCE.getLayersStack_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYERS_STACK__DESCRIPTION = eINSTANCE.getLayersStack_Description();
+
+ /**
+ * The meta object literal for the '<em><b>Diagram</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYERS_STACK__DIAGRAM = eINSTANCE.getLayersStack_Diagram();
+
+ /**
+ * The meta object literal for the '<em><b>State</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYERS_STACK__STATE = eINSTANCE.getLayersStack_State();
+
+ /**
+ * The meta object literal for the '<em><b>Get Compute Property Value Command</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = eINSTANCE.getLayersStack__GetComputePropertyValueCommand__View_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Get Properties Compute Property Value Command</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = eINSTANCE.getLayersStack__GetPropertiesComputePropertyValueCommand__View_EList();
+
+ /**
+ * The meta object literal for the '<em><b>Get Views Compute Property Value Command</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = eINSTANCE.getLayersStack__GetViewsComputePropertyValueCommand__EList_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Start After Creation</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK___START_AFTER_CREATION = eINSTANCE.getLayersStack__StartAfterCreation();
+
+ /**
+ * The meta object literal for the '<em><b>Attach Layers</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK___ATTACH_LAYERS = eINSTANCE.getLayersStack__AttachLayers();
+
+ /**
+ * The meta object literal for the '<em><b>Attach</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK___ATTACH = eINSTANCE.getLayersStack__Attach();
+
+ /**
+ * The meta object literal for the '<em><b>Detach</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK___DETACH = eINSTANCE.getLayersStack__Detach();
+
+ /**
+ * The meta object literal for the '<em><b>Enter Attached State</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK___ENTER_ATTACHED_STATE = eINSTANCE.getLayersStack__EnterAttachedState();
+
+ /**
+ * The meta object literal for the '<em><b>Exit Attached State</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK___EXIT_ATTACHED_STATE = eINSTANCE.getLayersStack__ExitAttachedState();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl <em>Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayer()
+ * @generated
+ */
+ EClass LAYER = eINSTANCE.getLayer();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorImpl <em>Color</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getColor()
+ * @generated
+ */
+ EClass COLOR = eINSTANCE.getColor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl <em>Color Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getColorInstance()
+ * @generated
+ */
+ EClass COLOR_INSTANCE = eINSTANCE.getColorInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute COLOR_INSTANCE__VALUE = eINSTANCE.getColorInstance_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl <em>Fill Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFillInstance()
+ * @generated
+ */
+ EClass FILL_INSTANCE = eINSTANCE.getFillInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Transparency</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FILL_INSTANCE__TRANSPARENCY = eINSTANCE.getFillInstance_Transparency();
+
+ /**
+ * The meta object literal for the '<em><b>Fill Color</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FILL_INSTANCE__FILL_COLOR = eINSTANCE.getFillInstance_FillColor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillImpl <em>Fill</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFill()
+ * @generated
+ */
+ EClass FILL = eINSTANCE.getFill();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillPropertySetterImpl <em>Fill Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFillPropertySetter()
+ * @generated
+ */
+ EClass FILL_PROPERTY_SETTER = eINSTANCE.getFillPropertySetter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsValidPropertySetterImpl <em>Is Valid Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsValidPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsValidPropertySetter()
+ * @generated
+ */
+ EClass IS_VALID_PROPERTY_SETTER = eINSTANCE.getIsValidPropertySetter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.NullPropertySetterImpl <em>Null Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.NullPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNullPropertySetter()
+ * @generated
+ */
+ EClass NULL_PROPERTY_SETTER = eINSTANCE.getNullPropertySetter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineTypeImpl <em>Line Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LineTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLineType()
+ * @generated
+ */
+ EClass LINE_TYPE = eINSTANCE.getLineType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl <em>Line Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLineInstance()
+ * @generated
+ */
+ EClass LINE_INSTANCE = eINSTANCE.getLineInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Line Color</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LINE_INSTANCE__LINE_COLOR = eINSTANCE.getLineInstance_LineColor();
+
+ /**
+ * The meta object literal for the '<em><b>Line With</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LINE_INSTANCE__LINE_WITH = eINSTANCE.getLineInstance_LineWith();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LinePropertySetterImpl <em>Line Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LinePropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLinePropertySetter()
+ * @generated
+ */
+ EClass LINE_PROPERTY_SETTER = eINSTANCE.getLinePropertySetter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontPropertySetterImpl <em>Font Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontPropertySetter()
+ * @generated
+ */
+ EClass FONT_PROPERTY_SETTER = eINSTANCE.getFontPropertySetter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl <em>Font Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontInstance()
+ * @generated
+ */
+ EClass FONT_INSTANCE = eINSTANCE.getFontInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Font Color</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FONT_INSTANCE__FONT_COLOR = eINSTANCE.getFontInstance_FontColor();
+
+ /**
+ * The meta object literal for the '<em><b>Font Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FONT_INSTANCE__FONT_NAME = eINSTANCE.getFontInstance_FontName();
+
+ /**
+ * The meta object literal for the '<em><b>Font Heigh</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FONT_INSTANCE__FONT_HEIGH = eINSTANCE.getFontInstance_FontHeigh();
+
+ /**
+ * The meta object literal for the '<em><b>Bold</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FONT_INSTANCE__BOLD = eINSTANCE.getFontInstance_Bold();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontTypeImpl <em>Font Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontType()
+ * @generated
+ */
+ EClass FONT_TYPE = eINSTANCE.getFontType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsVisiblePropertySetterImpl <em>Is Visible Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsVisiblePropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsVisiblePropertySetter()
+ * @generated
+ */
+ EClass IS_VISIBLE_PROPERTY_SETTER = eINSTANCE.getIsVisiblePropertySetter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl <em>Layer Operator Descriptor Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperatorDescriptorRegistry()
+ * @generated
+ */
+ EClass LAYER_OPERATOR_DESCRIPTOR_REGISTRY = eINSTANCE.getLayerOperatorDescriptorRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Descriptors</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS = eINSTANCE.getLayerOperatorDescriptorRegistry_Descriptors();
+
+ /**
+ * The meta object literal for the '<em><b>Property Operators</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS = eINSTANCE.getLayerOperatorDescriptorRegistry_PropertyOperators();
+
+ /**
+ * The meta object literal for the '<em><b>Property Collection Size</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE = eINSTANCE.getLayerOperatorDescriptorRegistry_PropertyCollectionSize();
+
+ /**
+ * The meta object literal for the '<em><b>Default Operator</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR = eINSTANCE.getLayerOperatorDescriptorRegistry_DefaultOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Add Layer Operator Descriptor</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_LAYER_OPERATOR_DESCRIPTOR__LAYEROPERATORDESCRIPTOR = eINSTANCE.getLayerOperatorDescriptorRegistry__AddLayerOperatorDescriptor__LayerOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '<em><b>Get Layer Operator Descriptor</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_LAYER_OPERATOR_DESCRIPTOR__STRING = eINSTANCE.getLayerOperatorDescriptorRegistry__GetLayerOperatorDescriptor__String();
+
+ /**
+ * The meta object literal for the '<em><b>Add Property Operator</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_PROPERTY_OPERATOR__PROPERTYOPERATOR = eINSTANCE.getLayerOperatorDescriptorRegistry__AddPropertyOperator__PropertyOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Get Property Operator</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_PROPERTY_OPERATOR__STRING = eINSTANCE.getLayerOperatorDescriptorRegistry__GetPropertyOperator__String();
+
+ /**
+ * The meta object literal for the '<em><b>Attach Operator To Descriptor</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ATTACH_OPERATOR_TO_DESCRIPTOR__PROPERTY_STRING_STRING = eINSTANCE.getLayerOperatorDescriptorRegistry__AttachOperatorToDescriptor__Property_String_String();
+
+ /**
+ * The meta object literal for the '<em><b>Create Layer Operator</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___CREATE_LAYER_OPERATOR__STRING = eINSTANCE.getLayerOperatorDescriptorRegistry__CreateLayerOperator__String();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl <em>Top Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTopLayerOperatorDescriptor()
+ * @generated
+ */
+ EClass TOP_LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getTopLayerOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl <em>Stacked Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStackedLayerOperatorDescriptor()
+ * @generated
+ */
+ EClass STACKED_LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getStackedLayerOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl <em>Custom Property Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomPropertyOperator()
+ * @generated
+ */
+ EClass CUSTOM_PROPERTY_OPERATOR = eINSTANCE.getCustomPropertyOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Classname</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CUSTOM_PROPERTY_OPERATOR__CLASSNAME = eINSTANCE.getCustomPropertyOperator_Classname();
+
+ /**
+ * The meta object literal for the '<em><b>Operator Instance</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE = eINSTANCE.getCustomPropertyOperator_OperatorInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Class Bundle ID</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID = eINSTANCE.getCustomPropertyOperator_ClassBundleID();
+
+ /**
+ * The meta object literal for the '<em><b>Reset Operator Instance</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation CUSTOM_PROPERTY_OPERATOR___RESET_OPERATOR_INSTANCE = eINSTANCE.getCustomPropertyOperator__ResetOperatorInstance();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AndStackedLayerOperatorDescriptorImpl <em>And Stacked Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AndStackedLayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAndStackedLayerOperatorDescriptor()
+ * @generated
+ */
+ EClass AND_STACKED_LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getAndStackedLayerOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.OrStackedLayerOperatorDescriptorImpl <em>Or Stacked Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.OrStackedLayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getOrStackedLayerOperatorDescriptor()
+ * @generated
+ */
+ EClass OR_STACKED_LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getOrStackedLayerOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsAbstractUmlSetterImpl <em>Is Abstract Uml Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsAbstractUmlSetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsAbstractUmlSetter()
+ * @generated
+ */
+ EClass IS_ABSTRACT_UML_SETTER = eINSTANCE.getIsAbstractUmlSetter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AllViewsDerivedLayerImpl <em>All Views Derived Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AllViewsDerivedLayerImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAllViewsDerivedLayer()
+ * @generated
+ */
+ EClass ALL_VIEWS_DERIVED_LAYER = eINSTANCE.getAllViewsDerivedLayer();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState <em>Layer State</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerState()
+ * @generated
+ */
+ EEnum LAYER_STATE = eINSTANCE.getLayerState();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel <em>Event Level</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getEventLevel()
+ * @generated
+ */
+ EEnum EVENT_LEVEL = eINSTANCE.getEventLevel();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeInstanceImpl <em>Type Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTypeInstance()
+ * @generated
+ */
+ EClass TYPE_INSTANCE = eINSTANCE.getTypeInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Set Value From String</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING = eINSTANCE.getTypeInstance__SetValueFromString__String();
+
+ /**
+ * The meta object literal for the '<em><b>Set Value From Instance</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = eINSTANCE.getTypeInstance__SetValueFromInstance__TypeInstance();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command Itf</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getComputePropertyValueCommandItf()
+ * @generated
+ */
+ EClass COMPUTE_PROPERTY_VALUE_COMMAND_ITF = eINSTANCE.getComputePropertyValueCommandItf();
+
+ /**
+ * The meta object literal for the '<em><b>Get Cmd Value</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation COMPUTE_PROPERTY_VALUE_COMMAND_ITF___GET_CMD_VALUE = eINSTANCE.getComputePropertyValueCommandItf__GetCmdValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl <em>String To Type Instance Map</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToTypeInstanceMap()
+ * @generated
+ */
+ EClass STRING_TO_TYPE_INSTANCE_MAP = eINSTANCE.getStringToTypeInstanceMap();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STRING_TO_TYPE_INSTANCE_MAP__KEY = eINSTANCE.getStringToTypeInstanceMap_Key();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRING_TO_TYPE_INSTANCE_MAP__VALUE = eINSTANCE.getStringToTypeInstanceMap_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl <em>Layer Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerDescriptor()
+ * @generated
+ */
+ EClass LAYER_DESCRIPTOR = eINSTANCE.getLayerDescriptor();
+
+ /**
+ * The meta object literal for the '<em><b>Property Registry</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_DESCRIPTOR__PROPERTY_REGISTRY = eINSTANCE.getLayerDescriptor_PropertyRegistry();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl <em>Layer Application Factory</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerApplicationFactory()
+ * @generated
+ */
+ EClass LAYER_APPLICATION_FACTORY = eINSTANCE.getLayerApplicationFactory();
+
+ /**
+ * The meta object literal for the '<em><b>Application</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_APPLICATION_FACTORY__APPLICATION = eINSTANCE.getLayerApplicationFactory_Application();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl <em>Property Setter Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertySetterRegistry()
+ * @generated
+ */
+ EClass PROPERTY_SETTER_REGISTRY = eINSTANCE.getPropertySetterRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Property Setters</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS = eINSTANCE.getPropertySetterRegistry_PropertySetters();
+
+ /**
+ * The meta object literal for the '<em><b>Setter Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY_SETTER_REGISTRY__SETTER_MAP = eINSTANCE.getPropertySetterRegistry_SetterMap();
+
+ /**
+ * The meta object literal for the '<em><b>Application</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY_SETTER_REGISTRY__APPLICATION = eINSTANCE.getPropertySetterRegistry_Application();
+
+ /**
+ * The meta object literal for the '<em><b>Get Property Setter</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__PROPERTY = eINSTANCE.getPropertySetterRegistry__GetPropertySetter__Property();
+
+ /**
+ * The meta object literal for the '<em><b>Get Property Setter</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__STRING = eINSTANCE.getPropertySetterRegistry__GetPropertySetter__String();
+
+ /**
+ * The meta object literal for the '<em><b>Add Property Setter</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PROPERTY_SETTER_REGISTRY___ADD_PROPERTY_SETTER__PROPERTYSETTER = eINSTANCE.getPropertySetterRegistry__AddPropertySetter__PropertySetter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl <em>Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertySetter()
+ * @generated
+ */
+ EClass PROPERTY_SETTER = eINSTANCE.getPropertySetter();
+
+ /**
+ * The meta object literal for the '<em><b>Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY_SETTER__PROPERTY = eINSTANCE.getPropertySetter_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Property Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PROPERTY_SETTER__PROPERTY_NAME = eINSTANCE.getPropertySetter_PropertyName();
+
+ /**
+ * The meta object literal for the '<em><b>Set Value</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = eINSTANCE.getPropertySetter__SetValue__View_TypeInstance();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl <em>String To Property Setter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToPropertySetter()
+ * @generated
+ */
+ EClass STRING_TO_PROPERTY_SETTER = eINSTANCE.getStringToPropertySetter();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STRING_TO_PROPERTY_SETTER__KEY = eINSTANCE.getStringToPropertySetter_Key();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRING_TO_PROPERTY_SETTER__VALUE = eINSTANCE.getStringToPropertySetter_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl <em>Abstract Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAbstractLayer()
+ * @generated
+ */
+ EClass ABSTRACT_LAYER = eINSTANCE.getAbstractLayer();
+
+ /**
+ * The meta object literal for the '<em><b>Property Values</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_LAYER__PROPERTY_VALUES = eINSTANCE.getAbstractLayer_PropertyValues();
+
+ /**
+ * The meta object literal for the '<em><b>Property Value Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_LAYER__PROPERTY_VALUE_MAP = eINSTANCE.getAbstractLayer_PropertyValueMap();
+
+ /**
+ * The meta object literal for the '<em><b>Layer Descriptor</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_LAYER__LAYER_DESCRIPTOR = eINSTANCE.getAbstractLayer_LayerDescriptor();
+
+ /**
+ * The meta object literal for the '<em><b>Views</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_LAYER__VIEWS = eINSTANCE.getAbstractLayer_Views();
+
+ /**
+ * The meta object literal for the '<em><b>Attached Properties</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_LAYER__ATTACHED_PROPERTIES = eINSTANCE.getAbstractLayer_AttachedProperties();
+
+ /**
+ * The meta object literal for the '<em><b>Add Property Instance</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = eINSTANCE.getAbstractLayer__AddPropertyInstance__Property();
+
+ /**
+ * The meta object literal for the '<em><b>Remove Property Instance</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = eINSTANCE.getAbstractLayer__RemovePropertyInstance__Property();
+
+ /**
+ * The meta object literal for the '<em><b>Get Property Instance</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY = eINSTANCE.getAbstractLayer__GetPropertyInstance__Property();
+
+ /**
+ * The meta object literal for the '<em><b>Get Property Instance</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING = eINSTANCE.getAbstractLayer__GetPropertyInstance__String();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl <em>Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getProperty()
+ * @generated
+ */
+ EClass PROPERTY = eINSTANCE.getProperty();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY__TYPE = eINSTANCE.getProperty_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Default Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY__DEFAULT_VALUE = eINSTANCE.getProperty_DefaultValue();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PROPERTY__NAME = eINSTANCE.getProperty_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PROPERTY__DESCRIPTION = eINSTANCE.getProperty_Description();
+
+ /**
+ * The meta object literal for the '<em><b>Index</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PROPERTY__INDEX = eINSTANCE.getProperty_Index();
+
+ /**
+ * The meta object literal for the '<em><b>Create Instance</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PROPERTY___CREATE_INSTANCE = eINSTANCE.getProperty__CreateInstance();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderElementImpl <em>Folder Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderElementImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFolderElement()
+ * @generated
+ */
+ EClass FOLDER_ELEMENT = eINSTANCE.getFolderElement();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl <em>Layer Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerExpression()
+ * @generated
+ */
+ EClass LAYER_EXPRESSION = eINSTANCE.getLayerExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYER_EXPRESSION__NAME = eINSTANCE.getLayerExpression_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYER_EXPRESSION__DESCRIPTION = eINSTANCE.getLayerExpression_Description();
+
+ /**
+ * The meta object literal for the '<em><b>Is Layer Enabled Internal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL = eINSTANCE.getLayerExpression_IsLayerEnabledInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Is Layer Enabled</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYER_EXPRESSION__IS_LAYER_ENABLED = eINSTANCE.getLayerExpression_IsLayerEnabled();
+
+ /**
+ * The meta object literal for the '<em><b>Is Branch Enabled</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYER_EXPRESSION__IS_BRANCH_ENABLED = eINSTANCE.getLayerExpression_IsBranchEnabled();
+
+ /**
+ * The meta object literal for the '<em><b>Owning Layers Stack</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_EXPRESSION__OWNING_LAYERS_STACK = eINSTANCE.getLayerExpression_OwningLayersStack();
+
+ /**
+ * The meta object literal for the '<em><b>State</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYER_EXPRESSION__STATE = eINSTANCE.getLayerExpression_State();
+
+ /**
+ * The meta object literal for the '<em><b>Get Compute Property Value Command</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = eINSTANCE.getLayerExpression__GetComputePropertyValueCommand__View_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Get Views Compute Property Value Command</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = eINSTANCE.getLayerExpression__GetViewsComputePropertyValueCommand__EList_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Get Properties Compute Property Value Command</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = eINSTANCE.getLayerExpression__GetPropertiesComputePropertyValueCommand__View_EList();
+
+ /**
+ * The meta object literal for the '<em><b>Attach To Layers Stack</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = eINSTANCE.getLayerExpression__AttachToLayersStack__LayersStack();
+
+ /**
+ * The meta object literal for the '<em><b>Get Layers Stack</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_EXPRESSION___GET_LAYERS_STACK = eINSTANCE.getLayerExpression__GetLayersStack();
+
+ /**
+ * The meta object literal for the '<em><b>Enter Attached State</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_EXPRESSION___ENTER_ATTACHED_STATE = eINSTANCE.getLayerExpression__EnterAttachedState();
+
+ /**
+ * The meta object literal for the '<em><b>Attach</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_EXPRESSION___ATTACH = eINSTANCE.getLayerExpression__Attach();
+
+ /**
+ * The meta object literal for the '<em><b>Detach</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_EXPRESSION___DETACH = eINSTANCE.getLayerExpression__Detach();
+
+ /**
+ * The meta object literal for the '<em><b>Exit Attached State</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_EXPRESSION___EXIT_ATTACHED_STATE = eINSTANCE.getLayerExpression__ExitAttachedState();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl <em>Application Dependant Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getApplicationDependantElement()
+ * @generated
+ */
+ EClass APPLICATION_DEPENDANT_ELEMENT = eINSTANCE.getApplicationDependantElement();
+
+ /**
+ * The meta object literal for the '<em><b>Application</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference APPLICATION_DEPENDANT_ELEMENT__APPLICATION = eINSTANCE.getApplicationDependantElement_Application();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getType()
+ * @generated
+ */
+ EClass TYPE = eINSTANCE.getType();
+
+ /**
+ * The meta object literal for the '<em><b>Metamodel</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TYPE__METAMODEL = eINSTANCE.getType_Metamodel();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TYPE__NAME = eINSTANCE.getType_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TYPE__DESCRIPTION = eINSTANCE.getType_Description();
+
+ /**
+ * The meta object literal for the '<em><b>Create Instance</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation TYPE___CREATE_INSTANCE = eINSTANCE.getType__CreateInstance();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl <em>Metamodel</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getMetamodel()
+ * @generated
+ */
+ EClass METAMODEL = eINSTANCE.getMetamodel();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute METAMODEL__NAME = eINSTANCE.getMetamodel_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute METAMODEL__DESCRIPTION = eINSTANCE.getMetamodel_Description();
+
+ /**
+ * The meta object literal for the '<em><b>Nsuri</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute METAMODEL__NSURI = eINSTANCE.getMetamodel_Nsuri();
+
+ /**
+ * The meta object literal for the '<em><b>Plugin ID</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute METAMODEL__PLUGIN_ID = eINSTANCE.getMetamodel_PluginID();
+
+ /**
+ * The meta object literal for the '<em><b>EPackage Instance Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute METAMODEL__EPACKAGE_INSTANCE_NAME = eINSTANCE.getMetamodel_EPackageInstanceName();
+
+ /**
+ * The meta object literal for the '<em><b>Is Type Valid</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute METAMODEL__IS_TYPE_VALID = eINSTANCE.getMetamodel_IsTypeValid();
+
+ /**
+ * The meta object literal for the '<em><b>Get EPackage</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation METAMODEL___GET_EPACKAGE = eINSTANCE.getMetamodel__GetEPackage();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl <em>Folder</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFolder()
+ * @generated
+ */
+ EClass FOLDER = eINSTANCE.getFolder();
+
+ /**
+ * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FOLDER__ELEMENTS = eINSTANCE.getFolder_Elements();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FOLDER__NAME = eINSTANCE.getFolder_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl <em>Int Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIntInstance()
+ * @generated
+ */
+ EClass INT_INSTANCE = eINSTANCE.getIntInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INT_INSTANCE__VALUE = eINSTANCE.getIntInstance_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl <em>Boolean Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBooleanInstance()
+ * @generated
+ */
+ EClass BOOLEAN_INSTANCE = eINSTANCE.getBooleanInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute BOOLEAN_INSTANCE__VALUE = eINSTANCE.getBooleanInstance_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl <em>String Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringInstance()
+ * @generated
+ */
+ EClass STRING_INSTANCE = eINSTANCE.getStringInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STRING_INSTANCE__VALUE = eINSTANCE.getStringInstance_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl <em>Int Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIntType()
+ * @generated
+ */
+ EClass INT_TYPE = eINSTANCE.getIntType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl <em>Boolean Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBooleanType()
+ * @generated
+ */
+ EClass BOOLEAN_TYPE = eINSTANCE.getBooleanType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl <em>String Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringType()
+ * @generated
+ */
+ EClass STRING_TYPE = eINSTANCE.getStringType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl <em>Custom Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomType()
+ * @generated
+ */
+ EClass CUSTOM_TYPE = eINSTANCE.getCustomType();
+
+ /**
+ * The meta object literal for the '<em><b>Classifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CUSTOM_TYPE__CLASSIFIER = eINSTANCE.getCustomType_Classifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl <em>Stack Application</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersStackApplication()
+ * @generated
+ */
+ EClass LAYERS_STACK_APPLICATION = eINSTANCE.getLayersStackApplication();
+
+ /**
+ * The meta object literal for the '<em><b>Layers Stacks</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYERS_STACK_APPLICATION__LAYERS_STACKS = eINSTANCE.getLayersStackApplication_LayersStacks();
+
+ /**
+ * The meta object literal for the '<em><b>Layer Stack Registry</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY = eINSTANCE.getLayersStackApplication_LayerStackRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Property Registry</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY = eINSTANCE.getLayersStackApplication_PropertyRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Layer Descriptor Registry</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY = eINSTANCE.getLayersStackApplication_LayerDescriptorRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Factory</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYERS_STACK_APPLICATION__FACTORY = eINSTANCE.getLayersStackApplication_Factory();
+
+ /**
+ * The meta object literal for the '<em><b>Property Setter Registry</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY = eINSTANCE.getLayersStackApplication_PropertySetterRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Layer Operator Descriptor Registry</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY = eINSTANCE.getLayersStackApplication_LayerOperatorDescriptorRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Get Layers Stack For</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK_APPLICATION___GET_LAYERS_STACK_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__GetLayersStackFor__Diagram();
+
+ /**
+ * The meta object literal for the '<em><b>Remove Layers Stack For</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK_APPLICATION___REMOVE_LAYERS_STACK_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__RemoveLayersStackFor__Diagram();
+
+ /**
+ * The meta object literal for the '<em><b>Is Layers Stack Attached For</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK_APPLICATION___IS_LAYERS_STACK_ATTACHED_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__IsLayersStackAttachedFor__Diagram();
+
+ /**
+ * The meta object literal for the '<em><b>Create Layers Stack For</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK_APPLICATION___CREATE_LAYERS_STACK_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__CreateLayersStackFor__Diagram();
+
+ /**
+ * The meta object literal for the '<em><b>Lookup Layers Stack For</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_STACK_APPLICATION___LOOKUP_LAYERS_STACK_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__LookupLayersStackFor__Diagram();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerStackDescriptorRegistryImpl <em>Layer Stack Descriptor Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerStackDescriptorRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerStackDescriptorRegistry()
+ * @generated
+ */
+ EClass LAYER_STACK_DESCRIPTOR_REGISTRY = eINSTANCE.getLayerStackDescriptorRegistry();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl <em>Property Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyRegistry()
+ * @generated
+ */
+ EClass PROPERTY_REGISTRY = eINSTANCE.getPropertyRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY_REGISTRY__PROPERTIES = eINSTANCE.getPropertyRegistry_Properties();
+
+ /**
+ * The meta object literal for the '<em><b>Type Registry</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY_REGISTRY__TYPE_REGISTRY = eINSTANCE.getPropertyRegistry_TypeRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Properties Count</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PROPERTY_REGISTRY__PROPERTIES_COUNT = eINSTANCE.getPropertyRegistry_PropertiesCount();
+
+ /**
+ * The meta object literal for the '<em><b>Get Property Index</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PROPERTY_REGISTRY___GET_PROPERTY_INDEX__STRING = eINSTANCE.getPropertyRegistry__GetPropertyIndex__String();
+
+ /**
+ * The meta object literal for the '<em><b>Get Property</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PROPERTY_REGISTRY___GET_PROPERTY__STRING = eINSTANCE.getPropertyRegistry__GetProperty__String();
+
+ /**
+ * The meta object literal for the '<em><b>Add Property</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PROPERTY_REGISTRY___ADD_PROPERTY__PROPERTY = eINSTANCE.getPropertyRegistry__AddProperty__Property();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl <em>String To Property Index Map</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToPropertyIndexMap()
+ * @generated
+ */
+ EClass STRING_TO_PROPERTY_INDEX_MAP = eINSTANCE.getStringToPropertyIndexMap();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRING_TO_PROPERTY_INDEX_MAP__VALUE = eINSTANCE.getStringToPropertyIndexMap_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STRING_TO_PROPERTY_INDEX_MAP__KEY = eINSTANCE.getStringToPropertyIndexMap_Key();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.SimpleLayerDescriptorImpl <em>Simple Layer Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.SimpleLayerDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getSimpleLayerDescriptor()
+ * @generated
+ */
+ EClass SIMPLE_LAYER_DESCRIPTOR = eINSTANCE.getSimpleLayerDescriptor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerDescriptorImpl <em>Reg Exp Layer Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getRegExpLayerDescriptor()
+ * @generated
+ */
+ EClass REG_EXP_LAYER_DESCRIPTOR = eINSTANCE.getRegExpLayerDescriptor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.NullInstanceImpl <em>Null Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.NullInstanceImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNullInstance()
+ * @generated
+ */
+ EClass NULL_INSTANCE = eINSTANCE.getNullInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Get Instance</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation NULL_INSTANCE___GET_INSTANCE = eINSTANCE.getNullInstance__GetInstance();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl <em>Reg Exp Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getRegExpLayer()
+ * @generated
+ */
+ EClass REG_EXP_LAYER = eINSTANCE.getRegExpLayer();
+
+ /**
+ * The meta object literal for the '<em><b>Expr</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute REG_EXP_LAYER__EXPR = eINSTANCE.getRegExpLayer_Expr();
+
+ /**
+ * The meta object literal for the '<em><b>Language</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute REG_EXP_LAYER__LANGUAGE = eINSTANCE.getRegExpLayer_Language();
+
+ /**
+ * The meta object literal for the '<em><b>Is Domain Changed Event Dependant</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT = eINSTANCE.getRegExpLayer_IsDomainChangedEventDependant();
+
+ /**
+ * The meta object literal for the '<em><b>Domain Changed Event Level</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL = eINSTANCE.getRegExpLayer_DomainChangedEventLevel();
+
+ /**
+ * The meta object literal for the '<em><b>Is Diagram Changed Event Dependant</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT = eINSTANCE.getRegExpLayer_IsDiagramChangedEventDependant();
+
+ /**
+ * The meta object literal for the '<em><b>Diagram Changed Event Level</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL = eINSTANCE.getRegExpLayer_DiagramChangedEventLevel();
+
+ /**
+ * The meta object literal for the '<em><b>Expression Context Object Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE = eINSTANCE.getRegExpLayer_ExpressionContextObjectType();
+
+ /**
+ * The meta object literal for the '<em><b>Activate</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation REG_EXP_LAYER___ACTIVATE__ABSTRACTLAYEROPERATOR = eINSTANCE.getRegExpLayer__Activate__AbstractLayerOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Deactivate</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation REG_EXP_LAYER___DEACTIVATE__ABSTRACTLAYEROPERATOR = eINSTANCE.getRegExpLayer__Deactivate__AbstractLayerOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Is Derived View</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation REG_EXP_LAYER___IS_DERIVED_VIEW__VIEW = eINSTANCE.getRegExpLayer__IsDerivedView__View();
+
+ /**
+ * The meta object literal for the '<em><b>Attach Derived View</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation REG_EXP_LAYER___ATTACH_DERIVED_VIEW__VIEW = eINSTANCE.getRegExpLayer__AttachDerivedView__View();
+
+ /**
+ * The meta object literal for the '<em><b>Attach Derived Views</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation REG_EXP_LAYER___ATTACH_DERIVED_VIEWS__ELIST = eINSTANCE.getRegExpLayer__AttachDerivedViews__EList();
+
+ /**
+ * The meta object literal for the '<em><b>Attach Derived Views</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation REG_EXP_LAYER___ATTACH_DERIVED_VIEWS = eINSTANCE.getRegExpLayer__AttachDerivedViews();
+
+ /**
+ * The meta object literal for the '<em><b>Lookup Derived Views</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation REG_EXP_LAYER___LOOKUP_DERIVED_VIEWS__ELIST = eINSTANCE.getRegExpLayer__LookupDerivedViews__EList();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl <em>Property Index</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyIndex()
+ * @generated
+ */
+ EClass PROPERTY_INDEX = eINSTANCE.getPropertyIndex();
+
+ /**
+ * The meta object literal for the '<em><b>Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROPERTY_INDEX__PROPERTY = eINSTANCE.getPropertyIndex_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Index</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PROPERTY_INDEX__INDEX = eINSTANCE.getPropertyIndex_Index();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl <em>Type Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTypeRegistry()
+ * @generated
+ */
+ EClass TYPE_REGISTRY = eINSTANCE.getTypeRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Types</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TYPE_REGISTRY__TYPES = eINSTANCE.getTypeRegistry_Types();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl <em>String To Type Map</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToTypeMap()
+ * @generated
+ */
+ EClass STRING_TO_TYPE_MAP = eINSTANCE.getStringToTypeMap();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRING_TO_TYPE_MAP__VALUE = eINSTANCE.getStringToTypeMap_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STRING_TO_TYPE_MAP__KEY = eINSTANCE.getStringToTypeMap_Key();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl <em>Layer Descriptor Registry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerDescriptorRegistry()
+ * @generated
+ */
+ EClass LAYER_DESCRIPTOR_REGISTRY = eINSTANCE.getLayerDescriptorRegistry();
+
+ /**
+ * The meta object literal for the '<em><b>Layer Descriptors</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS = eINSTANCE.getLayerDescriptorRegistry_LayerDescriptors();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl <em>Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperator()
+ * @generated
+ */
+ EClass LAYER_OPERATOR = eINSTANCE.getLayerOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Layers</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_OPERATOR__LAYERS = eINSTANCE.getLayerOperator_Layers();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer <em>Container</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersContainer()
+ * @generated
+ */
+ EClass LAYERS_CONTAINER = eINSTANCE.getLayersContainer();
+
+ /**
+ * The meta object literal for the '<em><b>Add Layer</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION = eINSTANCE.getLayersContainer__AddLayer__LayerExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl <em>Abstract Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAbstractLayerOperator()
+ * @generated
+ */
+ EClass ABSTRACT_LAYER_OPERATOR = eINSTANCE.getAbstractLayerOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Layer Operator Descriptor</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getAbstractLayerOperator_LayerOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '<em><b>Layer Operator Descriptor Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME = eINSTANCE.getAbstractLayerOperator_LayerOperatorDescriptorName();
+
+ /**
+ * The meta object literal for the '<em><b>Is Descriptor Set</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET = eINSTANCE.getAbstractLayerOperator__IsDescriptorSet();
+
+ /**
+ * The meta object literal for the '<em><b>Reset Descriptor</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR = eINSTANCE.getAbstractLayerOperator__ResetDescriptor();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl <em>Layer Operator Descriptor</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperatorDescriptor()
+ * @generated
+ */
+ EClass LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getLayerOperatorDescriptor();
+
+ /**
+ * The meta object literal for the '<em><b>Property Operators</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = eINSTANCE.getLayerOperatorDescriptor_PropertyOperators();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LAYER_OPERATOR_DESCRIPTOR__NAME = eINSTANCE.getLayerOperatorDescriptor_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Get Property Operator</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = eINSTANCE.getLayerOperatorDescriptor__GetPropertyOperator__Property();
+
+ /**
+ * The meta object literal for the '<em><b>Set Property Operator</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = eINSTANCE.getLayerOperatorDescriptor__SetPropertyOperator__Property_PropertyOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Create Layer Operator</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = eINSTANCE.getLayerOperatorDescriptor__CreateLayerOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Set Property Collection Size</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = eINSTANCE.getLayerOperatorDescriptor__SetPropertyCollectionSize__int_DefaultPropertyOperator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl <em>Property Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyOperator()
+ * @generated
+ */
+ EClass PROPERTY_OPERATOR = eINSTANCE.getPropertyOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PROPERTY_OPERATOR__NAME = eINSTANCE.getPropertyOperator_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Get Compute Property Value Command</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST = eINSTANCE.getPropertyOperator__GetComputePropertyValueCommand__EList();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.DefaultPropertyOperatorImpl <em>Default Property Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.DefaultPropertyOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getDefaultPropertyOperator()
+ * @generated
+ */
+ EClass DEFAULT_PROPERTY_OPERATOR = eINSTANCE.getDefaultPropertyOperator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl <em>Top Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTopLayerOperator()
+ * @generated
+ */
+ EClass TOP_LAYER_OPERATOR = eINSTANCE.getTopLayerOperator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl <em>Stacked Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStackedLayerOperator()
+ * @generated
+ */
+ EClass STACKED_LAYER_OPERATOR = eINSTANCE.getStackedLayerOperator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomLayerOperatorImpl <em>Custom Layer Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomLayerOperatorImpl
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomLayerOperator()
+ * @generated
+ */
+ EClass CUSTOM_LAYER_OPERATOR = eINSTANCE.getCustomLayerOperator();
+
+ /**
+ * The meta object literal for the '<em>String</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getString()
+ * @generated
+ */
+ EDataType STRING = eINSTANCE.getString();
+
+ /**
+ * The meta object literal for the '<em>boolean</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getboolean()
+ * @generated
+ */
+ EDataType BOOLEAN = eINSTANCE.getboolean();
+
+ /**
+ * The meta object literal for the '<em>EPackage</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getEPackage()
+ * @generated
+ */
+ EDataType EPACKAGE = eINSTANCE.getEPackage();
+
+ /**
+ * The meta object literal for the '<em>Not Found Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.NotFoundException
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNotFoundException()
+ * @generated
+ */
+ EDataType NOT_FOUND_EXCEPTION = eINSTANCE.getNotFoundException();
+
+ /**
+ * The meta object literal for the '<em>Compute Property Value Command</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getComputePropertyValueCommand()
+ * @generated
+ */
+ EDataType COMPUTE_PROPERTY_VALUE_COMMAND = eINSTANCE.getComputePropertyValueCommand();
+
+ /**
+ * The meta object literal for the '<em>Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.LayersException
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersException()
+ * @generated
+ */
+ EDataType LAYERS_EXCEPTION = eINSTANCE.getLayersException();
+
+ /**
+ * The meta object literal for the '<em>int</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getint()
+ * @generated
+ */
+ EDataType INT = eINSTANCE.getint();
+
+ /**
+ * The meta object literal for the '<em>Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Object
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getObject()
+ * @generated
+ */
+ EDataType OBJECT = eINSTANCE.getObject();
+
+ /**
+ * The meta object literal for the '<em>Custom Property Opertor Instance</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomPropertyOpertorInstance()
+ * @generated
+ */
+ EDataType CUSTOM_PROPERTY_OPERTOR_INSTANCE = eINSTANCE.getCustomPropertyOpertorInstance();
+
+ /**
+ * The meta object literal for the '<em>Bad State Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.BadStateException
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBadStateException()
+ * @generated
+ */
+ EDataType BAD_STATE_EXCEPTION = eINSTANCE.getBadStateException();
+
+ }
+
+} //LayersPackage
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStack.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStack.java
new file mode 100644
index 00000000000..16c1e39d7e2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStack.java
@@ -0,0 +1,296 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Stack</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getLayers <em>Layers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDiagram <em>Diagram</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack()
+ * @model
+ * @generated
+ */
+public interface LayersStack extends LayersContainer {
+ /**
+ * Returns the value of the '<em><b>Layers</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layers</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layers</em>' containment reference.
+ * @see #setLayers(LayerExpression)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_Layers()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ LayerExpression getLayers();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getLayers <em>Layers</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layers</em>' containment reference.
+ * @see #getLayers()
+ * @generated
+ */
+ void setLayers(LayerExpression value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_Name()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Description</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Description</em>' attribute.
+ * @see #setDescription(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_Description()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDescription();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDescription <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Description</em>' attribute.
+ * @see #getDescription()
+ * @generated
+ */
+ void setDescription(String value);
+
+ /**
+ * Returns the value of the '<em><b>Diagram</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Diagram</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Diagram</em>' reference.
+ * @see #setDiagram(Diagram)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_Diagram()
+ * @model ordered="false"
+ * @generated
+ */
+ Diagram getDiagram();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDiagram <em>Diagram</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Diagram</em>' reference.
+ * @see #getDiagram()
+ * @generated
+ */
+ void setDiagram(Diagram value);
+
+ /**
+ * Returns the value of the '<em><b>State</b></em>' attribute.
+ * The default value is <code>"detached"</code>.
+ * The literals are from the enumeration {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>State</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>State</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+ * @see #setState(LayerState)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_State()
+ * @model default="detached" unique="false" required="true" ordered="false"
+ * @generated
+ */
+ LayerState getState();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getState <em>State</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>State</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+ * @see #getState()
+ * @generated
+ */
+ void setState(LayerState value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyMany="true"
+ * @generated
+ */
+ EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, EList<Property> property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewMany="true" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(EList<View> view, Property property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void startAfterCreation();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Start the LayersStack after a reloading by EMF. This method should be explicitly called after a reloading.
+ * The method usually start the layer behaviors.
+ * <!-- end-model-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+ * @generated
+ */
+ void attachLayers() throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Try to attach this Layer. If successful, the state go to "attached". Otherwise, an exception is thrown.
+ * A Layer can be attached if its required attributes are set.
+ * Required attributes:
+ * <ul>
+ * <li>application</li>
+ * <li>owningLayerStack</li>
+ * <li>parent container</li>
+ * <li></li>
+ * </ul>
+ * Just after enterring in "attached" state, the enterAttachedState() method is called.
+ * If this Layer is successfully attached, then attach subLayers.
+ * <!-- end-model-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+ * @generated
+ */
+ void attach() throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Detach the Layer. The state go to "detached".
+ * Associated behavior are stopped.
+ * <!-- end-model-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+ * @generated
+ */
+ void detach() throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * This method is called by the class immediately after entering in attached state.
+ * The methodcan be used to start the layer behaviors.
+ * <!-- end-model-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+ * @generated
+ */
+ void enterAttachedState() throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * This method is called just before this Layer leave the attached state.
+ *
+ * <!-- end-model-doc -->
+ * @model
+ * @generated
+ */
+ void exitAttachedState();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws LayersException
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyMany="true"
+ * @generated NOT
+ */
+ EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> property) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws LayersException If something wrong happen during computation.
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" viewMany="true" propertyRequired="true" propertyOrdered="false"
+ * @generated NOT
+ */
+ EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> view, Property property) throws LayersException;
+
+} // LayersStack
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStackApplication.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStackApplication.java
new file mode 100644
index 00000000000..ff001f5c81e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStackApplication.java
@@ -0,0 +1,258 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Stack Application</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStacks <em>Layers Stacks</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerStackRegistry <em>Layer Stack Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertyRegistry <em>Property Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerDescriptorRegistry <em>Layer Descriptor Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory <em>Factory</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry <em>Property Setter Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication()
+ * @model
+ * @generated
+ */
+public interface LayersStackApplication extends FolderElement {
+ /**
+ * Returns the value of the '<em><b>Layers Stacks</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layers Stacks</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layers Stacks</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_LayersStacks()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ EList<LayersStack> getLayersStacks();
+
+ /**
+ * Returns the value of the '<em><b>Layer Stack Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Stack Registry</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Stack Registry</em>' containment reference.
+ * @see #setLayerStackRegistry(LayerStackDescriptorRegistry)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_LayerStackRegistry()
+ * @model containment="true" required="true" transient="true" ordered="false"
+ * @generated
+ */
+ LayerStackDescriptorRegistry getLayerStackRegistry();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerStackRegistry <em>Layer Stack Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layer Stack Registry</em>' containment reference.
+ * @see #getLayerStackRegistry()
+ * @generated
+ */
+ void setLayerStackRegistry(LayerStackDescriptorRegistry value);
+
+ /**
+ * Returns the value of the '<em><b>Property Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Registry</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Registry</em>' containment reference.
+ * @see #setPropertyRegistry(PropertyRegistry)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_PropertyRegistry()
+ * @model containment="true" required="true" transient="true" ordered="false"
+ * @generated
+ */
+ PropertyRegistry getPropertyRegistry();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertyRegistry <em>Property Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property Registry</em>' containment reference.
+ * @see #getPropertyRegistry()
+ * @generated
+ */
+ void setPropertyRegistry(PropertyRegistry value);
+
+ /**
+ * Returns the value of the '<em><b>Layer Descriptor Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Descriptor Registry</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Descriptor Registry</em>' containment reference.
+ * @see #setLayerDescriptorRegistry(LayerDescriptorRegistry)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_LayerDescriptorRegistry()
+ * @model containment="true" required="true" transient="true" ordered="false"
+ * @generated
+ */
+ LayerDescriptorRegistry getLayerDescriptorRegistry();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerDescriptorRegistry <em>Layer Descriptor Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layer Descriptor Registry</em>' containment reference.
+ * @see #getLayerDescriptorRegistry()
+ * @generated
+ */
+ void setLayerDescriptorRegistry(LayerDescriptorRegistry value);
+
+ /**
+ * Returns the value of the '<em><b>Factory</b></em>' containment reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication <em>Application</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Factory</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Factory</em>' containment reference.
+ * @see #setFactory(LayerApplicationFactory)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_Factory()
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication
+ * @model opposite="application" containment="true" required="true" transient="true" ordered="false"
+ * @generated
+ */
+ LayerApplicationFactory getFactory();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory <em>Factory</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Factory</em>' containment reference.
+ * @see #getFactory()
+ * @generated
+ */
+ void setFactory(LayerApplicationFactory value);
+
+ /**
+ * Returns the value of the '<em><b>Property Setter Registry</b></em>' containment reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication <em>Application</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Setter Registry</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Setter Registry</em>' containment reference.
+ * @see #setPropertySetterRegistry(PropertySetterRegistry)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_PropertySetterRegistry()
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication
+ * @model opposite="application" containment="true" transient="true" ordered="false"
+ * @generated
+ */
+ PropertySetterRegistry getPropertySetterRegistry();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry <em>Property Setter Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property Setter Registry</em>' containment reference.
+ * @see #getPropertySetterRegistry()
+ * @generated
+ */
+ void setPropertySetterRegistry(PropertySetterRegistry value);
+
+ /**
+ * Returns the value of the '<em><b>Layer Operator Descriptor Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Layer Operator Descriptor Registry</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Layer Operator Descriptor Registry</em>' containment reference.
+ * @see #setLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_LayerOperatorDescriptorRegistry()
+ * @model containment="true" transient="true" ordered="false"
+ * @generated
+ */
+ LayerOperatorDescriptorRegistry getLayerOperatorDescriptorRegistry();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Layer Operator Descriptor Registry</em>' containment reference.
+ * @see #getLayerOperatorDescriptorRegistry()
+ * @generated
+ */
+ void setLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" diagramRequired="true" diagramOrdered="false"
+ * @generated
+ */
+ LayersStack getLayersStackFor(Diagram diagram);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model diagramRequired="true" diagramOrdered="false"
+ * @generated
+ */
+ void removeLayersStackFor(Diagram diagram);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false" diagramRequired="true" diagramOrdered="false"
+ * @generated
+ */
+ boolean isLayersStackAttachedFor(Diagram diagram);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" diagramRequired="true" diagramOrdered="false"
+ * @generated
+ */
+ LayersStack createLayersStackFor(Diagram diagram);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" diagramRequired="true" diagramOrdered="false"
+ * @generated
+ */
+ LayersStack lookupLayersStackFor(Diagram diagram) throws NotFoundException;
+
+} // LayersStackApplication
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineInstance.java
new file mode 100644
index 00000000000..d242e07c8d8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineInstance.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Line Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineColor <em>Line Color</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineWith <em>Line With</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLineInstance()
+ * @model
+ * @generated
+ */
+public interface LineInstance extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Line Color</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Line Color</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Line Color</em>' attribute.
+ * @see #setLineColor(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLineInstance_LineColor()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getLineColor();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineColor <em>Line Color</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Line Color</em>' attribute.
+ * @see #getLineColor()
+ * @generated
+ */
+ void setLineColor(int value);
+
+ /**
+ * Returns the value of the '<em><b>Line With</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Line With</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Line With</em>' attribute.
+ * @see #setLineWith(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLineInstance_LineWith()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getLineWith();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineWith <em>Line With</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Line With</em>' attribute.
+ * @see #getLineWith()
+ * @generated
+ */
+ void setLineWith(int value);
+
+} // LineInstance
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LinePropertySetter.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LinePropertySetter.java
new file mode 100644
index 00000000000..9250040b75e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LinePropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Line Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLinePropertySetter()
+ * @model
+ * @generated
+ */
+public interface LinePropertySetter extends PropertySetter {
+} // LinePropertySetter
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineType.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineType.java
new file mode 100644
index 00000000000..f1eb7f6eaad
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Line Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLineType()
+ * @model
+ * @generated
+ */
+public interface LineType extends Type {
+} // LineType
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Metamodel.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Metamodel.java
new file mode 100644
index 00000000000..6b84cad0a8c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Metamodel.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Metamodel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getNsuri <em>Nsuri</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getPluginID <em>Plugin ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackageInstanceName <em>EPackage Instance Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#isTypeValid <em>Is Type Valid</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel()
+ * @model
+ * @generated
+ */
+public interface Metamodel extends FolderElement {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_Name()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Description</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Description</em>' attribute.
+ * @see #setDescription(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_Description()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDescription();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getDescription <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Description</em>' attribute.
+ * @see #getDescription()
+ * @generated
+ */
+ void setDescription(String value);
+
+ /**
+ * Returns the value of the '<em><b>Nsuri</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Nsuri</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Nsuri</em>' attribute.
+ * @see #setNsuri(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_Nsuri()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getNsuri();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getNsuri <em>Nsuri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Nsuri</em>' attribute.
+ * @see #getNsuri()
+ * @generated
+ */
+ void setNsuri(String value);
+
+ /**
+ * Returns the value of the '<em><b>Plugin ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Plugin ID</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Plugin ID</em>' attribute.
+ * @see #setPluginID(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_PluginID()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getPluginID();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getPluginID <em>Plugin ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Plugin ID</em>' attribute.
+ * @see #getPluginID()
+ * @generated
+ */
+ void setPluginID(String value);
+
+ /**
+ * Returns the value of the '<em><b>EPackage Instance Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>EPackage Instance Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>EPackage Instance Name</em>' attribute.
+ * @see #setEPackageInstanceName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_EPackageInstanceName()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getEPackageInstanceName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackageInstanceName <em>EPackage Instance Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>EPackage Instance Name</em>' attribute.
+ * @see #getEPackageInstanceName()
+ * @generated
+ */
+ void setEPackageInstanceName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Is Type Valid</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Is Type Valid</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Is Type Valid</em>' attribute.
+ * @see #setIsTypeValid(boolean)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_IsTypeValid()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isTypeValid();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#isTypeValid <em>Is Type Valid</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Is Type Valid</em>' attribute.
+ * @see #isTypeValid()
+ * @generated
+ */
+ void setIsTypeValid(boolean value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" dataType="org.eclipse.papyrus.layers.stackmodel.layers.EPackage" required="true" ordered="false"
+ * @generated
+ */
+ EPackage getEPackage();
+
+} // Metamodel
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullInstance.java
new file mode 100644
index 00000000000..739375b64bf
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullInstance.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Null Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getNullInstance()
+ * @model
+ * @generated
+ */
+public interface NullInstance extends TypeInstance {
+
+ public static NullInstance NULLINSTANCE = LayersFactory.eINSTANCE.createNullInstance();
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true" ordered="false"
+ * @generated
+ */
+ NullInstance getInstance();
+} // NullInstance
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullPropertySetter.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullPropertySetter.java
new file mode 100644
index 00000000000..655aa194378
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullPropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Null Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getNullPropertySetter()
+ * @model
+ * @generated
+ */
+public interface NullPropertySetter extends PropertySetter {
+} // NullPropertySetter
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/OrStackedLayerOperatorDescriptor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/OrStackedLayerOperatorDescriptor.java
new file mode 100644
index 00000000000..26fb0197f6d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/OrStackedLayerOperatorDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Or Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getOrStackedLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface OrStackedLayerOperatorDescriptor extends StackedLayerOperatorDescriptor {
+} // OrStackedLayerOperatorDescriptor
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Package.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Package.java
new file mode 100644
index 00000000000..aa48600f2e8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Package.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Package</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Package#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPackage()
+ * @model
+ * @generated
+ */
+public interface Package extends PackageableElement {
+ /**
+ * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PackageableElement}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Elements</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Elements</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPackage_Elements()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ EList<PackageableElement> getElements();
+
+} // Package
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PackageableElement.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PackageableElement.java
new file mode 100644
index 00000000000..e315bcbb81c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PackageableElement.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Packageable Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPackageableElement()
+ * @model
+ * @generated
+ */
+public interface PackageableElement extends EObject {
+} // PackageableElement
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Property.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Property.java
new file mode 100644
index 00000000000..1dd31ae6393
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Property.java
@@ -0,0 +1,178 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDefaultValue <em>Default Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getIndex <em>Index</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty()
+ * @model
+ * @generated
+ */
+public interface Property extends FolderElement {
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(Type)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_Type()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Type getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getType <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(Type value);
+
+ /**
+ * Returns the value of the '<em><b>Default Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Value</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Value</em>' containment reference.
+ * @see #setDefaultValue(TypeInstance)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_DefaultValue()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ TypeInstance getDefaultValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDefaultValue <em>Default Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Value</em>' containment reference.
+ * @see #getDefaultValue()
+ * @generated
+ */
+ void setDefaultValue(TypeInstance value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_Name()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Description</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Description</em>' attribute.
+ * @see #setDescription(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_Description()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDescription();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDescription <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Description</em>' attribute.
+ * @see #getDescription()
+ * @generated
+ */
+ void setDescription(String value);
+
+ /**
+ * Returns the value of the '<em><b>Index</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Index</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Index</em>' attribute.
+ * @see #setIndex(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_Index()
+ * @model default="-1" dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getIndex();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getIndex <em>Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Index</em>' attribute.
+ * @see #getIndex()
+ * @generated
+ */
+ void setIndex(int value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.BadStateException"
+ * @generated
+ */
+ TypeInstance createInstance() throws BadStateException;
+
+} // Property
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyDescriptor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyDescriptor.java
new file mode 100644
index 00000000000..4a23a1b044a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyDescriptor.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyDescriptor()
+ * @model
+ * @generated
+ */
+public interface PropertyDescriptor extends EObject {
+} // PropertyDescriptor
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyIndex.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyIndex.java
new file mode 100644
index 00000000000..0c1e68da8ef
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyIndex.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Index</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getIndex <em>Index</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyIndex()
+ * @model
+ * @generated
+ */
+public interface PropertyIndex extends EObject {
+ /**
+ * Returns the value of the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property</em>' reference.
+ * @see #setProperty(Property)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyIndex_Property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getProperty();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getProperty <em>Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property</em>' reference.
+ * @see #getProperty()
+ * @generated
+ */
+ void setProperty(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Index</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Index</em>' attribute.
+ * @see #setIndex(int)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyIndex_Index()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+ * @generated
+ */
+ int getIndex();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getIndex <em>Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Index</em>' attribute.
+ * @see #getIndex()
+ * @generated
+ */
+ void setIndex(int value);
+
+} // PropertyIndex
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyOperator.java
new file mode 100644
index 00000000000..149cb301964
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyOperator.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyOperator()
+ * @model
+ * @generated
+ */
+public interface PropertyOperator extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyOperator_Name()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" propertyDataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" propertyMany="true"
+ * @generated
+ */
+ ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException;
+
+} // PropertyOperator
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyRegistry.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyRegistry.java
new file mode 100644
index 00000000000..3a13c99b052
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyRegistry.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperties <em>Properties</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getTypeRegistry <em>Type Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount <em>Properties Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyRegistry()
+ * @model
+ * @generated
+ */
+public interface PropertyRegistry extends EObject {
+ /**
+ * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.Property}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Properties</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Properties</em>' containment reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyRegistry_Properties()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Property> getProperties();
+
+ /**
+ * Returns the value of the '<em><b>Type Registry</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type Registry</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type Registry</em>' containment reference.
+ * @see #setTypeRegistry(TypeRegistry)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyRegistry_TypeRegistry()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ TypeRegistry getTypeRegistry();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getTypeRegistry <em>Type Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type Registry</em>' containment reference.
+ * @see #getTypeRegistry()
+ * @generated
+ */
+ void setTypeRegistry(TypeRegistry value);
+
+ /**
+ * Returns the value of the '<em><b>Properties Count</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Properties Count</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Properties Count</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyRegistry_PropertiesCount()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+ * @generated
+ */
+ int getPropertiesCount();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyNameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" propertyNameRequired="true" propertyNameOrdered="false"
+ * @generated
+ */
+ int getPropertyIndex(String propertyName) throws NotFoundException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyNameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" propertyNameRequired="true" propertyNameOrdered="false"
+ * @generated
+ */
+ Property getProperty(String propertyName) throws NotFoundException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ void addProperty(Property property);
+
+} // PropertyRegistry
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetter.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetter.java
new file mode 100644
index 00000000000..f4fadd13ef2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetter.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.View;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getPropertyName <em>Property Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetter()
+ * @model abstract="true"
+ * @generated
+ */
+public interface PropertySetter extends EObject {
+
+
+ public static PropertySetter NULL_PROPERTY_SETTER = LayersFactory.eINSTANCE.createNullPropertySetter();
+
+ /**
+ * Returns the value of the '<em><b>Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property</em>' reference.
+ * @see #setProperty(Property)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetter_Property()
+ * @model ordered="false"
+ * @generated
+ */
+ Property getProperty();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getProperty <em>Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property</em>' reference.
+ * @see #getProperty()
+ * @generated
+ */
+ void setProperty(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Property Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Name</em>' attribute.
+ * @see #setPropertyName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetter_PropertyName()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getPropertyName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getPropertyName <em>Property Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Property Name</em>' attribute.
+ * @see #getPropertyName()
+ * @generated
+ */
+ void setPropertyName(String value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model viewRequired="true" viewOrdered="false" valueRequired="true" valueOrdered="false"
+ * @generated
+ */
+ void setValue(View view, TypeInstance value);
+
+} // PropertySetter
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetterRegistry.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetterRegistry.java
new file mode 100644
index 00000000000..76268e379a2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetterRegistry.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Setter Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetters <em>Property Setters</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getSetterMap <em>Setter Map</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetterRegistry()
+ * @model
+ * @generated
+ */
+public interface PropertySetterRegistry extends EObject {
+ /**
+ * Returns the value of the '<em><b>Property Setters</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property Setters</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property Setters</em>' reference list.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetterRegistry_PropertySetters()
+ * @model
+ * @generated
+ */
+ EList<PropertySetter> getPropertySetters();
+
+ /**
+ * Returns the value of the '<em><b>Setter Map</b></em>' map.
+ * The key is of type {@link java.lang.String},
+ * and the value is of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter},
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Setter Map</em>' map isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Setter Map</em>' map.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetterRegistry_SetterMap()
+ * @model mapType="org.eclipse.papyrus.layers.stackmodel.layers.StringToPropertySetter<org.eclipse.papyrus.layers.stackmodel.layers.String, org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter>" ordered="false"
+ * @generated
+ */
+ EMap<String, PropertySetter> getSetterMap();
+
+ /**
+ * Returns the value of the '<em><b>Application</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry <em>Property Setter Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Application</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Application</em>' container reference.
+ * @see #setApplication(LayersStackApplication)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetterRegistry_Application()
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry
+ * @model opposite="propertySetterRegistry" ordered="false"
+ * @generated
+ */
+ LayersStackApplication getApplication();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication <em>Application</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Application</em>' container reference.
+ * @see #getApplication()
+ * @generated
+ */
+ void setApplication(LayersStackApplication value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ PropertySetter getPropertySetter(Property property) throws NotFoundException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" propertyRequired="true" propertyOrdered="false"
+ * @generated
+ */
+ PropertySetter getPropertySetter(String property) throws NotFoundException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model setterRequired="true" setterOrdered="false"
+ * @generated
+ */
+ void addPropertySetter(PropertySetter setter);
+
+} // PropertySetterRegistry
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyValue.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyValue.java
new file mode 100644
index 00000000000..04b1d069db1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyValue.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyValue()
+ * @model abstract="true"
+ * @generated
+ */
+public interface PropertyValue extends EObject {
+} // PropertyValue
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayer.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayer.java
new file mode 100644
index 00000000000..d259d1b068a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayer.java
@@ -0,0 +1,287 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Reg Exp Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpr <em>Expr</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getLanguage <em>Language</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDomainChangedEventDependant <em>Is Domain Changed Event Dependant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDomainChangedEventLevel <em>Domain Changed Event Level</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDiagramChangedEventDependant <em>Is Diagram Changed Event Dependant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDiagramChangedEventLevel <em>Diagram Changed Event Level</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpressionContextObjectType <em>Expression Context Object Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer()
+ * @model
+ * @generated
+ */
+public interface RegExpLayer extends AbstractLayer {
+
+ /**
+ * Returns the value of the '<em><b>Expr</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Expr</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Expr</em>' attribute.
+ * @see #setExpr(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_Expr()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getExpr();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpr <em>Expr</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Expr</em>' attribute.
+ * @see #getExpr()
+ * @generated
+ */
+ void setExpr(String value);
+
+ /**
+ * Returns the value of the '<em><b>Language</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Language</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Language</em>' attribute.
+ * @see #setLanguage(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_Language()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getLanguage();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getLanguage <em>Language</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Language</em>' attribute.
+ * @see #getLanguage()
+ * @generated
+ */
+ void setLanguage(String value);
+
+ /**
+ * Returns the value of the '<em><b>Is Domain Changed Event Dependant</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Is Domain Changed Event Dependant</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Is Domain Changed Event Dependant</em>' attribute.
+ * @see #setIsDomainChangedEventDependant(boolean)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_IsDomainChangedEventDependant()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isDomainChangedEventDependant();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDomainChangedEventDependant <em>Is Domain Changed Event Dependant</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Is Domain Changed Event Dependant</em>' attribute.
+ * @see #isDomainChangedEventDependant()
+ * @generated
+ */
+ void setIsDomainChangedEventDependant(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Domain Changed Event Level</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Domain Changed Event Level</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Domain Changed Event Level</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+ * @see #setDomainChangedEventLevel(EventLevel)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_DomainChangedEventLevel()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ EventLevel getDomainChangedEventLevel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDomainChangedEventLevel <em>Domain Changed Event Level</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Domain Changed Event Level</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+ * @see #getDomainChangedEventLevel()
+ * @generated
+ */
+ void setDomainChangedEventLevel(EventLevel value);
+
+ /**
+ * Returns the value of the '<em><b>Is Diagram Changed Event Dependant</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Is Diagram Changed Event Dependant</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Is Diagram Changed Event Dependant</em>' attribute.
+ * @see #setIsDiagramChangedEventDependant(boolean)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_IsDiagramChangedEventDependant()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isDiagramChangedEventDependant();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDiagramChangedEventDependant <em>Is Diagram Changed Event Dependant</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Is Diagram Changed Event Dependant</em>' attribute.
+ * @see #isDiagramChangedEventDependant()
+ * @generated
+ */
+ void setIsDiagramChangedEventDependant(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Diagram Changed Event Level</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Diagram Changed Event Level</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Diagram Changed Event Level</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+ * @see #setDiagramChangedEventLevel(EventLevel)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_DiagramChangedEventLevel()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ EventLevel getDiagramChangedEventLevel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDiagramChangedEventLevel <em>Diagram Changed Event Level</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Diagram Changed Event Level</em>' attribute.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+ * @see #getDiagramChangedEventLevel()
+ * @generated
+ */
+ void setDiagramChangedEventLevel(EventLevel value);
+
+ /**
+ * Returns the value of the '<em><b>Expression Context Object Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Expression Context Object Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Expression Context Object Type</em>' attribute.
+ * @see #setExpressionContextObjectType(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_ExpressionContextObjectType()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getExpressionContextObjectType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpressionContextObjectType <em>Expression Context Object Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Expression Context Object Type</em>' attribute.
+ * @see #getExpressionContextObjectType()
+ * @generated
+ */
+ void setExpressionContextObjectType(String value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model newParentLayerRequired="true" newParentLayerOrdered="false"
+ * @generated
+ */
+ void activate(AbstractLayerOperator newParentLayer);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model oldParentLayerRequired="true" oldParentLayerOrdered="false"
+ * @generated
+ */
+ void deactivate(AbstractLayerOperator oldParentLayer);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false"
+ * @generated
+ */
+ boolean isDerivedView(View view) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false"
+ * @generated
+ */
+ void attachDerivedView(View view) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewsMany="true" viewsOrdered="false"
+ * @generated
+ */
+ void attachDerivedViews(EList<View> views) throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+ * @generated
+ */
+ void attachDerivedViews() throws LayersException;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewsMany="true" viewsOrdered="false"
+ * @generated
+ */
+ EList<View> lookupDerivedViews(EList<View> views) throws LayersException;
+} // RegExpLayer
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayerDescriptor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayerDescriptor.java
new file mode 100644
index 00000000000..07965e53b7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayerDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Reg Exp Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayerDescriptor()
+ * @model
+ * @generated
+ */
+public interface RegExpLayerDescriptor extends LayerDescriptor {
+} // RegExpLayerDescriptor
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/SimpleLayerDescriptor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/SimpleLayerDescriptor.java
new file mode 100644
index 00000000000..f8829c878b9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/SimpleLayerDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getSimpleLayerDescriptor()
+ * @model
+ * @generated
+ */
+public interface SimpleLayerDescriptor extends LayerDescriptor {
+} // SimpleLayerDescriptor
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperator.java
new file mode 100644
index 00000000000..ad1520f80a9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Stacked Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStackedLayerOperator()
+ * @model
+ * @generated
+ */
+public interface StackedLayerOperator extends AbstractLayerOperator {
+} // StackedLayerOperator
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperatorDescriptor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperatorDescriptor.java
new file mode 100644
index 00000000000..d4beab5a47a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperatorDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStackedLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface StackedLayerOperatorDescriptor extends LayerOperatorDescriptor {
+} // StackedLayerOperatorDescriptor
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringInstance.java
new file mode 100644
index 00000000000..eabba43e5f4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringInstance.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringInstance()
+ * @model
+ * @generated
+ */
+public interface StringInstance extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringInstance_Value()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+} // StringInstance
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringPropertyValue.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringPropertyValue.java
new file mode 100644
index 00000000000..4cf624bc6aa
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringPropertyValue.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Property Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringPropertyValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringPropertyValue()
+ * @model
+ * @generated
+ */
+public interface StringPropertyValue extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringPropertyValue_Value()
+ * @model unique="false" dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringPropertyValue#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+} // StringPropertyValue
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringToTypeInstanceMap.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringToTypeInstanceMap.java
new file mode 100644
index 00000000000..3122fde82f1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringToTypeInstanceMap.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String To Type Instance Map</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringToTypeInstanceMap()
+ * @model
+ * @generated
+ */
+public interface StringToTypeInstanceMap extends EObject {
+ /**
+ * Returns the value of the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Key</em>' attribute.
+ * @see #setKey(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringToTypeInstanceMap_Key()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getKey();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap#getKey <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Key</em>' attribute.
+ * @see #getKey()
+ * @generated
+ */
+ void setKey(String value);
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' reference.
+ * @see #setValue(TypeInstance)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringToTypeInstanceMap_Value()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TypeInstance getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap#getValue <em>Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' reference.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(TypeInstance value);
+
+} // StringToTypeInstanceMap
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringType.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringType.java
new file mode 100644
index 00000000000..e1288078829
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringType()
+ * @model
+ * @generated
+ */
+public interface StringType extends Type {
+} // StringType
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringValue.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringValue.java
new file mode 100644
index 00000000000..4c6f02b87b8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringValue.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringValue()
+ * @model
+ * @generated
+ */
+public interface StringValue extends TypeInstance {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringValue_Value()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringValue#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+} // StringValue
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperator.java
new file mode 100644
index 00000000000..45742af73ae
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Top Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTopLayerOperator()
+ * @model
+ * @generated
+ */
+public interface TopLayerOperator extends AbstractLayerOperator {
+} // TopLayerOperator
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperatorDescriptor.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperatorDescriptor.java
new file mode 100644
index 00000000000..f1c2a4aed83
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperatorDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Top Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTopLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface TopLayerOperatorDescriptor extends LayerOperatorDescriptor {
+} // TopLayerOperatorDescriptor
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Type.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Type.java
new file mode 100644
index 00000000000..1862580ac37
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Type.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getMetamodel <em>Metamodel</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getDescription <em>Description</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getType()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Type extends FolderElement {
+ /**
+ * Returns the value of the '<em><b>Metamodel</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Metamodel</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Metamodel</em>' reference.
+ * @see #setMetamodel(Metamodel)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getType_Metamodel()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Metamodel getMetamodel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getMetamodel <em>Metamodel</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Metamodel</em>' reference.
+ * @see #getMetamodel()
+ * @generated
+ */
+ void setMetamodel(Metamodel value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getType_Name()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Description</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Description</em>' attribute.
+ * @see #setDescription(String)
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getType_Description()
+ * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDescription();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getDescription <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Description</em>' attribute.
+ * @see #getDescription()
+ * @generated
+ */
+ void setDescription(String value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TypeInstance createInstance();
+
+} // Type
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeInstance.java
new file mode 100644
index 00000000000..5bd4797e63a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeInstance.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTypeInstance()
+ * @model abstract="true" superTypes="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommandItf"
+ * @generated
+ */
+public interface TypeInstance extends EObject, ComputePropertyValueCommand {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model valueDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" valueRequired="true" valueOrdered="false"
+ * @generated
+ */
+ void setValueFromString(String value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model valueRequired="true" valueOrdered="false"
+ * @generated
+ */
+ void setValueFromInstance(TypeInstance value);
+} // TypeInstance
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeRegistry.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeRegistry.java
new file mode 100644
index 00000000000..e979dc84ae6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeRegistry.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry#getTypes <em>Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTypeRegistry()
+ * @model
+ * @generated
+ */
+public interface TypeRegistry extends EObject {
+ /**
+ * Returns the value of the '<em><b>Types</b></em>' map.
+ * The key is of type {@link java.lang.String},
+ * and the value is of type {@link org.eclipse.papyrus.layers.stackmodel.layers.Type},
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Types</em>' map isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Types</em>' map.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTypeRegistry_Types()
+ * @model mapType="org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeMap<org.eclipse.papyrus.layers.stackmodel.layers.String, org.eclipse.papyrus.layers.stackmodel.layers.Type>" ordered="false"
+ * @generated
+ */
+ EMap<String, Type> getTypes();
+
+} // TypeRegistry
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImpl.java
new file mode 100644
index 00000000000..7da435656f0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImpl.java
@@ -0,0 +1,796 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map.Entry;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getPropertyValues <em>Property Values</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getPropertyValueMap <em>Property Value Map</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getLayerDescriptor <em>Layer Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getViews <em>Views</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getAttachedProperties <em>Attached Properties</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractLayerImpl extends LayerExpressionImpl implements AbstractLayer {
+ /**
+ * The cached value of the '{@link #getPropertyValues() <em>Property Values</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyValues()
+ * @generated
+ * @ordered
+ */
+ protected EList<TypeInstance> propertyValues;
+
+ /**
+ * The cached value of the '{@link #getPropertyValueMap() <em>Property Value Map</em>}' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyValueMap()
+ * @generated
+ * @ordered
+ */
+ protected EMap<String, TypeInstance> propertyValueMap;
+
+ /**
+ * The cached value of the '{@link #getLayerDescriptor() <em>Layer Descriptor</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayerDescriptor()
+ * @generated
+ * @ordered
+ */
+ protected LayerDescriptor layerDescriptor;
+
+ /**
+ * The cached value of the '{@link #getViews() <em>Views</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getViews()
+ * @generated
+ * @ordered
+ */
+ protected EList<View> views;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected AbstractLayerImpl() {
+ super();
+ // Listen on application changed and propertyValues changed
+ // This behavior is set from the constructor, has it doesn't interfered with
+ // reloading
+ Adapter adapter = new PropertyValuesSynchronizer();
+ this.eAdapters().add(adapter);
+
+ }
+
+ /**
+ * Start the behaviors associated to this layer.
+ * This method is called by one of the methods: {@link #startAfterReloading()} or {@link #attachToLayersStack(LayersStack)}.
+ */
+ protected void startBehaviors() {
+ super.startBehaviors();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.ABSTRACT_LAYER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @SuppressWarnings("serial")
+ public EList<TypeInstance> getPropertyValues() {
+ if (propertyValues == null) {
+ propertyValues = new EObjectResolvingEList<TypeInstance>(TypeInstance.class, this, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES) {
+
+ // Allows double
+ @Override
+ protected boolean isUnique() {
+ return false;
+ }
+ };
+ }
+ return propertyValues;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<String, TypeInstance> getPropertyValueMap() {
+ if (propertyValueMap == null) {
+ propertyValueMap = new EcoreEMap<String,TypeInstance>(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP, StringToTypeInstanceMapImpl.class, this, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP);
+ }
+ return propertyValueMap;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerDescriptor getLayerDescriptor() {
+ if (layerDescriptor != null && layerDescriptor.eIsProxy()) {
+ InternalEObject oldLayerDescriptor = (InternalEObject)layerDescriptor;
+ layerDescriptor = (LayerDescriptor)eResolveProxy(oldLayerDescriptor);
+ if (layerDescriptor != oldLayerDescriptor) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR, oldLayerDescriptor, layerDescriptor));
+ }
+ }
+ return layerDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerDescriptor basicGetLayerDescriptor() {
+ return layerDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLayerDescriptor(LayerDescriptor newLayerDescriptor) {
+ LayerDescriptor oldLayerDescriptor = layerDescriptor;
+ layerDescriptor = newLayerDescriptor;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR, oldLayerDescriptor, layerDescriptor));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<View> getViews() {
+ if (views == null) {
+ views = new EObjectResolvingEList<View>(View.class, this, LayersPackage.ABSTRACT_LAYER__VIEWS);
+ }
+ return views;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<Property> getAttachedProperties() {
+
+ // Silly implementation:
+ // walk existing instance keys, and get there descriptor
+ // from the propertyRegistry.
+ // TODO: improve this method: have a list updated when an instance is
+ // added or removed.
+
+ EList<Property> res = new BasicEList<Property>();
+
+ for( Entry<String, TypeInstance> entry : getPropertyValueMap()) {
+ String propertyName = entry.getKey();
+
+ try {
+ res.add(application.getPropertyRegistry().getProperty(propertyName));
+ } catch (NotFoundException e) {
+ // This should not happen
+ res.add(null);
+ e.printStackTrace();
+ }
+
+
+ }
+
+ return res;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance addPropertyInstance(Property property) throws LayersException {
+
+ String name = property.getName();
+ if( name == null || name.length()==0) {
+ throw new LayersException("The name of a property must be set.");
+ }
+
+ try {
+ TypeInstance instance = property.createInstance();
+ getPropertyValueMap().put(name, instance);
+ return instance;
+ } catch (NullPointerException e) {
+ throw new LayersException("The type of the property '"
+ + name + "' must be set.", e);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void removePropertyInstance(Property property) {
+ getPropertyValueMap().remove(property.getName());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance getPropertyInstance(Property property) throws LayersException {
+ return getPropertyInstance(property.getName() );
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance getPropertyInstance(String property) throws LayersException {
+ TypeInstance instance = getPropertyValueMap().get(property);
+
+ if( instance == null) {
+ throw new NotFoundException("Can't find instance for the specified property");
+ }
+
+ return instance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+ return ((InternalEList<?>)getPropertyValueMap()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES:
+ return getPropertyValues();
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+ if (coreType) return getPropertyValueMap();
+ else return getPropertyValueMap().map();
+ case LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR:
+ if (resolve) return getLayerDescriptor();
+ return basicGetLayerDescriptor();
+ case LayersPackage.ABSTRACT_LAYER__VIEWS:
+ return getViews();
+ case LayersPackage.ABSTRACT_LAYER__ATTACHED_PROPERTIES:
+ return getAttachedProperties();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES:
+ getPropertyValues().clear();
+ getPropertyValues().addAll((Collection<? extends TypeInstance>)newValue);
+ return;
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+ ((EStructuralFeature.Setting)getPropertyValueMap()).set(newValue);
+ return;
+ case LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR:
+ setLayerDescriptor((LayerDescriptor)newValue);
+ return;
+ case LayersPackage.ABSTRACT_LAYER__VIEWS:
+ getViews().clear();
+ getViews().addAll((Collection<? extends View>)newValue);
+ return;
+ case LayersPackage.ABSTRACT_LAYER__ATTACHED_PROPERTIES:
+ getAttachedProperties().clear();
+ getAttachedProperties().addAll((Collection<? extends Property>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES:
+ getPropertyValues().clear();
+ return;
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+ getPropertyValueMap().clear();
+ return;
+ case LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR:
+ setLayerDescriptor((LayerDescriptor)null);
+ return;
+ case LayersPackage.ABSTRACT_LAYER__VIEWS:
+ getViews().clear();
+ return;
+ case LayersPackage.ABSTRACT_LAYER__ATTACHED_PROPERTIES:
+ getAttachedProperties().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES:
+ return propertyValues != null && !propertyValues.isEmpty();
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+ return propertyValueMap != null && !propertyValueMap.isEmpty();
+ case LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR:
+ return layerDescriptor != null;
+ case LayersPackage.ABSTRACT_LAYER__VIEWS:
+ return views != null && !views.isEmpty();
+ case LayersPackage.ABSTRACT_LAYER__ATTACHED_PROPERTIES:
+ return !getAttachedProperties().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY:
+ try {
+ return addPropertyInstance((Property)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY:
+ removePropertyInstance((Property)arguments.get(0));
+ return null;
+ case LayersPackage.ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY:
+ try {
+ return getPropertyInstance((Property)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING:
+ try {
+ return getPropertyInstance((String)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * Set the {@link #propertyValues} property.
+ * The #application proerty must be set.
+ * Set the list size to the number of availale property
+ * Synchronize the values with instances found in {@link #propertyValueMap}.
+ * @throws BadStateException
+ */
+ protected void resetAllPropertyValuesFromRegistry() throws BadStateException {
+
+ // Reset list
+ getPropertyValues().clear();
+
+ // Check application
+ LayersStackApplication application = getApplication();
+ if(application== null) {
+ // do not synchronize the list
+ return;
+// throw new BadStateException("Property 'application' must be set for resetAllPropertyValuesFromRegistry() to work.");
+ }
+
+ List<Property> availableProperties;
+ int size;
+ try {
+ availableProperties = application.getPropertyRegistry().getProperties();
+ size = availableProperties.size();
+ } catch (NullPointerException e) {
+ throw new BadStateException("Property 'application.propertyRegistry' must be set for resetAllPropertyValuesFromRegistry() to work.");
+ }
+
+ // initialize the propertyValues
+ getPropertyValues().clear();
+ for(int i=0;i<size;i++) {
+ String propertyName = availableProperties.get(i).getName();
+// getPropertyValues().set(i, getPropertyValueMap().get(propertyName));
+ // Add the instance, or null if not found. This ensure
+ // That the list will have the correct size.
+ TypeInstance instance = getPropertyValueMap().get(propertyName);
+ if( instance == null ) {
+ instance = NullInstance.NULLINSTANCE;
+ }
+ getPropertyValues().add( instance);
+ }
+ }
+
+ /**
+ * Synchronize the specified propertyName with the value in the {@link #propertyValues} list.
+ * @param propertyName
+ * @param value
+ * @throws NotFoundException
+ */
+ protected void synchronizePropertyValue(String propertyName, TypeInstance value) throws BadStateException, NotFoundException {
+
+ if( application == null) {
+ //silently fail
+ return;
+ }
+
+ try {
+ int propertyIndex = application.getPropertyRegistry().getPropertyIndex(propertyName);
+ getPropertyValues().set(propertyIndex, value);
+ } catch (NullPointerException e) {
+ throw new BadStateException("application should be set first.");
+ }
+ }
+
+ /**
+ * This class listen to #propertyValueMap, and synchronize propertyValues accordingly.
+ *
+ *
+ */
+ public class PropertyValuesSynchronizer extends AdapterImpl {
+
+ @Override
+ public void notifyChanged(Notification msg) {
+ System.err.println("event " + msg.getEventType());
+
+ switch(msg.getFeatureID(AbstractLayer.class)) {
+ case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+ notifyLayerPropertyValueMapChanged(msg);
+ break;
+
+ case LayersPackage.ABSTRACT_LAYER__APPLICATION:
+ notifyLayerApplicationFeatureChanged(msg);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ /**
+ * The {@link LayerImpl#propertyValueMap} has changed. Synchronize the {@link LayerImpl#propertyValues} list.
+ * @param msg
+ */
+ protected void notifyLayerPropertyValueMapChanged(Notification msg) {
+ System.err.println("map changed " + msg.getEventType());
+ switch(msg.getEventType()) {
+ case Notification.SET:
+ {
+ // A key is modified
+ // Add the value to other list
+ // An entry is added
+ StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)msg.getNewValue();
+ System.out.println("SET - newValue=" + entry.getValue()
+ + ", key=" + entry.getKey());
+
+ String newKey = entry.getKey();
+ TypeInstance value = entry.getValue();
+ if( value != null) {
+ try {
+ synchronizePropertyValue(newKey, value);
+ } catch (BadStateException e) {
+ // Show error for debug
+ e.printStackTrace();
+ } catch (NotFoundException e) {
+ // Show error for debug
+ e.printStackTrace();
+ }
+ }
+
+
+ break;
+ }
+ case Notification.UNSET:
+ // A key is added
+ break;
+ case Notification.ADD:
+ {
+ // An entry is added
+ StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)msg.getNewValue();
+ System.out.println("ADD - newValue=" + entry.getValue()
+ + ", key=" + entry.getKey());
+ // Add the corresponding instance to propertyValues
+ try {
+ synchronizePropertyValue(entry.getKey(), entry.getValue());
+ } catch (LayersException e) {
+ // should not happen
+ e.printStackTrace();
+ }
+ break;
+ }
+ case Notification.REMOVE:
+ {
+ // An entry is removed
+ StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)msg.getOldValue();
+ System.out.println("REMOVE" + entry.getValue()
+ + ", key=" + entry.getKey());
+ // Add the corresponding instance to propertyValues
+ try {
+ synchronizePropertyValue(entry.getKey(), NullInstance.NULLINSTANCE);
+ } catch (LayersException e) {
+ // should not happen
+ e.printStackTrace();
+ }
+ break;
+ }
+ default:
+ break;
+ }
+
+ }
+ /**
+ * The {@link LayerImpl#propertyValueMap} has changed. Synchronize the {@link LayerImpl#propertyValues} list.
+ * @param msg
+ */
+ protected void notifyLayerApplicationFeatureChanged(Notification msg) {
+ System.err.println("application changed " + msg.getEventType());
+ switch(msg.getEventType()) {
+ case Notification.SET:
+ {
+ // The property is set.
+ // Synchronize propertyValues
+ try {
+ resetAllPropertyValuesFromRegistry();
+ } catch (BadStateException e) {
+ // should not happen
+ e.printStackTrace();
+ }
+ break;
+ }
+ case Notification.UNSET:
+ // application is removed
+ // clear propertyValues
+ getPropertyValues().clear();
+ break;
+ }
+ }
+
+ }
+ /**
+ * Get the command to compute the required property value.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ *
+ * @param view
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+
+ // If the layer is disabled, return a null command.
+ // If the view is not attached to the layer, stop.
+ if( ! isLayerEnabledInternal() || ! getViews().contains(view)) {
+ return null;
+ }
+
+ try {
+ return getPropertyInstance(property);
+ } catch (NotFoundException e) {
+ // not found ==> return null
+ return null;
+ }
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)
+ *
+ * @param view
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> properties) throws LayersException {
+
+ // Check if the view is attached to the layer
+ if( ! isLayerEnabledInternal() || ! getViews().contains(view)) {
+ return null;
+ }
+
+ // the result list
+ EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(properties.size());
+ boolean isCmdFound = false;
+
+ for( Property property : properties) {
+ if( property != null) {
+ // Add the cmd allowing to get the value of the Property
+ // That is, the PropertyInstance itself
+ try {
+ resCmds.add( getPropertyInstance(property) );
+ isCmdFound = true;
+ } catch (NotFoundException e) {
+ // not found ==> cmd = null
+ resCmds.add(null);
+ }
+ }
+ else {
+ resCmds.add(null);
+ }
+ }
+ // Return appropriate result
+ if( isCmdFound) {
+ return resCmds;
+ }
+ else {
+ // No command ==> null
+ return null;
+ }
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ *
+ * @param view
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> views, Property property) throws LayersException {
+
+
+ // If the layer is disabled, return a null command.
+ if( ! isLayerEnabledInternal() ) {
+ return null;
+ }
+
+ // Stop if the property is not attached to the layer
+ TypeInstance value;
+ try {
+ value = getPropertyInstance(property);
+ } catch (NotFoundException e1) {
+ // the property is not set in this layer;
+ return null;
+ }
+
+ // Now, compute the list of commands. One command for each view.
+ EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(views.size());
+ boolean isCmdFound = false;
+
+ for( View view : views) {
+ if( view != null && getViews().contains(view)) {
+ isCmdFound = true;
+ resCmds.add( value );
+ }
+ else {
+ resCmds.add(null);
+ }
+ }
+
+ // Return appropriate result
+ if( isCmdFound) {
+ return resCmds;
+ }
+ else {
+ // No command ==> null
+ return null;
+ }
+ }
+
+ /**
+ * Get the LayersStack that own directly or indirectly this Layer.
+ * Throw an exception if no {@link LayersStack} can be found.
+ * <br>
+ * Lookup is done recursively in parent containers.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getLayersStack()
+ *
+ * @return
+ * @throws NotFoundException
+ */
+// @Override
+// public LayersStack getLayersStack() throws NotFoundException {
+// // TODO: performance improvment. It is possible to avoid the lookup
+// // by caching the LayersStack, or by setting a corresponding property
+// // in the model
+// return (LayersStack)ECoreUtils.lookupAncestorOfType(this, LayersPackage.eINSTANCE.getLayersStack());
+// }
+
+
+} //AbstractLayerImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImpl.java
new file mode 100644
index 00000000000..8bc0816c2ec
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImpl.java
@@ -0,0 +1,475 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getLayerOperatorDescriptor <em>Layer Operator Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getLayerOperatorDescriptorName <em>Layer Operator Descriptor Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractLayerOperatorImpl extends LayerOperatorImpl implements AbstractLayerOperator {
+ /**
+ * The cached value of the '{@link #getLayerOperatorDescriptor() <em>Layer Operator Descriptor</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayerOperatorDescriptor()
+ * @generated
+ * @ordered
+ */
+ protected LayerOperatorDescriptor layerOperatorDescriptor;
+
+ /**
+ * The default value of the '{@link #getLayerOperatorDescriptorName() <em>Layer Operator Descriptor Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayerOperatorDescriptorName()
+ * @generated
+ * @ordered
+ */
+ protected static final String LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getLayerOperatorDescriptorName() <em>Layer Operator Descriptor Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayerOperatorDescriptorName()
+ * @generated
+ * @ordered
+ */
+ protected String layerOperatorDescriptorName = LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractLayerOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.ABSTRACT_LAYER_OPERATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptor getLayerOperatorDescriptor() {
+ if (layerOperatorDescriptor != null && layerOperatorDescriptor.eIsProxy()) {
+ InternalEObject oldLayerOperatorDescriptor = (InternalEObject)layerOperatorDescriptor;
+ layerOperatorDescriptor = (LayerOperatorDescriptor)eResolveProxy(oldLayerOperatorDescriptor);
+ if (layerOperatorDescriptor != oldLayerOperatorDescriptor) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR, oldLayerOperatorDescriptor, layerOperatorDescriptor));
+ }
+ }
+ return layerOperatorDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptor basicGetLayerOperatorDescriptor() {
+ return layerOperatorDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLayerOperatorDescriptor(LayerOperatorDescriptor newLayerOperatorDescriptor) {
+ LayerOperatorDescriptor oldLayerOperatorDescriptor = layerOperatorDescriptor;
+ layerOperatorDescriptor = newLayerOperatorDescriptor;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR, oldLayerOperatorDescriptor, layerOperatorDescriptor));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLayerOperatorDescriptorName() {
+ return layerOperatorDescriptorName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setLayerOperatorDescriptorName(String newLayerOperatorDescriptorName) {
+
+ // Avoid recursive call if name is the same
+ if( newLayerOperatorDescriptorName.equals(layerOperatorDescriptorName) ) {
+ return;
+ }
+
+ String oldLayerOperatorDescriptorName = layerOperatorDescriptorName;
+ layerOperatorDescriptorName = newLayerOperatorDescriptorName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME, oldLayerOperatorDescriptorName, layerOperatorDescriptorName));
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isDescriptorSet() {
+ return getLayerOperatorDescriptor() != null;
+ }
+
+ /**
+ * Reset the descriptor accordingly to the descriptor name.
+ * The descriptor is resseted only if the ::application and ::layerOperatorDescriptorName are set.
+ * Nothing is done if one of the attribute is not set.
+ * Nothing is done if the descriptor can not be found (maybe a log is issue).
+ * <!-- begin-user-doc -->
+ * Not used ?
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void resetDescriptor() {
+
+ if( getApplication() == null ) {
+ return;
+ }
+ if( getLayerOperatorDescriptorName() == null) {
+ return;
+ }
+
+ try {
+ LayerOperatorDescriptor descriptor = application.getLayerOperatorDescriptorRegistry().getLayerOperatorDescriptor(getLayerOperatorDescriptorName());
+ setLayerOperatorDescriptor(descriptor);
+ } catch (NotFoundException e) {
+ System.err.println("LOG - " + this.getClass().getName() + " - " + e.getMessage() );
+ }
+
+ }
+
+ /**
+ * Override in order to call {@link #resetDescriptor()}
+ * @param newApplication
+ */
+// @Override
+// public void setApplication(LayersStackApplication newApplication) {
+// super.setApplication(newApplication);
+// resetDescriptor();
+// }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isLayerEnabledInternal() {
+ return isLayerEnabled() && isDescriptorSet();
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR:
+ if (resolve) return getLayerOperatorDescriptor();
+ return basicGetLayerOperatorDescriptor();
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+ return getLayerOperatorDescriptorName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR:
+ setLayerOperatorDescriptor((LayerOperatorDescriptor)newValue);
+ return;
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+ setLayerOperatorDescriptorName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR:
+ setLayerOperatorDescriptor((LayerOperatorDescriptor)null);
+ return;
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+ setLayerOperatorDescriptorName(LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR:
+ return layerOperatorDescriptor != null;
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+ return LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT == null ? layerOperatorDescriptorName != null : !LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT.equals(layerOperatorDescriptorName);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET:
+ return isDescriptorSet();
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR:
+ resetDescriptor();
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (layerOperatorDescriptorName: ");
+ result.append(layerOperatorDescriptorName);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * Get the command to compute the required property value.
+ * Walk all layers and collect the non null command for the property and view.
+ * Then return the command provided by a call to the properties'operator(collectedCmd).
+ *
+
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ *
+ * @param view
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+
+ // Do nothing if the layer is disable.
+ if( ! isLayerEnabled() ) {
+ return null;
+ }
+
+
+ // The list of commands provided by each layers
+ EList<ComputePropertyValueCommand> collectedCmds = new BasicEList<ComputePropertyValueCommand>(getLayers().size());
+
+ // Walk all layers and return the first cmd that is not null for specified view and proerty.
+ for( LayerExpression layer : getLayers()) {
+
+ ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view, property);
+ if( cmd != null) {
+ collectedCmds.add(cmd);
+ }
+ }
+
+ // If we have no subcommand, skip the value by returning null.
+ if( collectedCmds.size()==0) {
+ return null;
+ }
+
+ // Call the corresponding operator
+ ComputePropertyValueCommand res;
+ try {
+ res = getLayerOperatorDescriptor().getPropertyOperator(property).getComputePropertyValueCommand(collectedCmds);
+ } catch (UnsupportedOperationException e) {
+ // The operator is not implemented
+ System.err.println(this.getClass().getSimpleName() + "WARNING - Operator not implemened for LayerOperator '"
+ + this.getClass().getSimpleName() +"' and property '"
+ + property.getName() + "'.");
+ return null;
+ }
+ return res;
+
+ }
+ /**
+ * For each property, add the first property value in the list of result.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)
+ *
+ * @param view
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> properties) throws LayersException {
+
+ // Do nothing if the layer is disable.
+ if( ! isLayerEnabled() ) {
+ return null;
+ }
+
+ // Simple implementation
+ // TODO Check if we can optimize
+
+ // the result list
+ EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(properties.size());
+ boolean isCmdFound = false;
+
+ // Walk each property
+ for( Property property : properties) {
+ if( property == null) {
+ resCmds.add(null);
+ continue;
+ }
+
+ ComputePropertyValueCommand cmd = getComputePropertyValueCommand(view, property);
+ if( cmd != null) {
+ isCmdFound = true;
+ }
+ resCmds.add(cmd);
+
+
+ }
+ // Return appropriate result
+ if( isCmdFound) {
+ return resCmds;
+ }
+ else {
+ // No command ==> null
+ return null;
+ }
+ }
+
+ /**
+ * For each view, add the first property value in the list of result.
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ *
+ * @param view
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> views, Property property) throws LayersException {
+
+ // Do nothing if the layer is disable.
+ if( ! isLayerEnabled() ) {
+ return null;
+ }
+
+ // Simple implementation
+ // TODO Check if we can optimize
+
+ // the result list
+ EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(views.size());
+ boolean isCmdFound = false;
+
+ for( View view : views) {
+ if( view == null) {
+ resCmds.add(null);
+ continue;
+ }
+
+ ComputePropertyValueCommand cmd = getComputePropertyValueCommand(view, property);
+ if( cmd != null) {
+ isCmdFound = true;
+ }
+ resCmds.add(cmd);
+ }
+
+ // Return appropriate result
+ if( isCmdFound) {
+ return resCmds;
+ }
+ else {
+ // No command ==> null
+ return null;
+ }
+ }
+
+} //AbstractLayerOperatorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AllViewsDerivedLayerImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AllViewsDerivedLayerImpl.java
new file mode 100644
index 00000000000..906d9ee477d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AllViewsDerivedLayerImpl.java
@@ -0,0 +1,66 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.util.DiagramViewToListSynchronizer;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>All Views Derived Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AllViewsDerivedLayerImpl extends AbstractLayerImpl implements AllViewsDerivedLayer {
+
+ /**
+ * Object used to synchronize a list with the diagram's views.
+ *
+ */
+ protected DiagramViewToListSynchronizer viewsListSynchronizer;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected AllViewsDerivedLayerImpl() {
+ super();
+ // init the synchronizer
+ viewsListSynchronizer = new DiagramViewToListSynchronizer(getViews());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.ALL_VIEWS_DERIVED_LAYER;
+ }
+
+ /**
+ * This layer has just been added to a LayerStack.
+ * Set the root of the expression.
+ * Set the views to match the result of the expression.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#initLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+ *
+ * @param owningLayersStack
+ */
+ @Override
+ public void initLayer(LayersStack owningLayersStack) {
+ super.initLayer(owningLayersStack);
+
+ System.err.println(this.getClass().getSimpleName() + ".initLayer(" + owningLayersStack + ")");
+ // Set the diagram associated to this tree of layers
+ viewsListSynchronizer.setDiagram(owningLayersStack.getDiagram());
+ }
+} //AllViewsDerivedLayerImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AndStackedLayerOperatorDescriptorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AndStackedLayerOperatorDescriptorImpl.java
new file mode 100644
index 00000000000..8af2776a4f2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AndStackedLayerOperatorDescriptorImpl.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>And Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AndStackedLayerOperatorDescriptorImpl extends StackedLayerOperatorDescriptorImpl implements AndStackedLayerOperatorDescriptor {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AndStackedLayerOperatorDescriptorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.AND_STACKED_LAYER_OPERATOR_DESCRIPTOR;
+ }
+
+} //AndStackedLayerOperatorDescriptorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ApplicationDependantElementImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ApplicationDependantElementImpl.java
new file mode 100644
index 00000000000..1eb10585873
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ApplicationDependantElementImpl.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Application Dependant Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ApplicationDependantElementImpl extends MinimalEObjectImpl.Container implements ApplicationDependantElement {
+ /**
+ * The cached value of the '{@link #getApplication() <em>Application</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getApplication()
+ * @generated
+ * @ordered
+ */
+ protected LayersStackApplication application;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ApplicationDependantElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.APPLICATION_DEPENDANT_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStackApplication getApplication() {
+ if (application != null && application.eIsProxy()) {
+ InternalEObject oldApplication = (InternalEObject)application;
+ application = (LayersStackApplication)eResolveProxy(oldApplication);
+ if (application != oldApplication) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION, oldApplication, application));
+ }
+ }
+ return application;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStackApplication basicGetApplication() {
+ return application;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setApplication(LayersStackApplication newApplication) {
+ LayersStackApplication oldApplication = application;
+ application = newApplication;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION, oldApplication, application));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION:
+ if (resolve) return getApplication();
+ return basicGetApplication();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION:
+ setApplication((LayersStackApplication)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION:
+ setApplication((LayersStackApplication)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION:
+ return application != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ApplicationDependantElementImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanInstanceImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanInstanceImpl.java
new file mode 100644
index 00000000000..69790035c27
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanInstanceImpl.java
@@ -0,0 +1,200 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanInstanceImpl extends TypeInstanceImpl implements BooleanInstance {
+ /**
+ * The default value of the '{@link #isValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isValue()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean VALUE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isValue()
+ * @generated
+ * @ordered
+ */
+ protected boolean value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.BOOLEAN_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(boolean newValue) {
+ boolean oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.BOOLEAN_INSTANCE__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+ return isValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+ setValue((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromString(String value) {
+
+ if(value==null || value.length()==0) {
+ return;
+ }
+
+ setValue(Boolean.parseBoolean(value.trim()));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromInstance(TypeInstance value) {
+
+ // Check if the value is of the right instance
+ if( ! getClass().isInstance(value) ) {
+ return;
+ }
+
+ BooleanInstance instance = (BooleanInstance)value;
+ setValue(instance.isValue());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //BooleanInstanceImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImpl.java
new file mode 100644
index 00000000000..4adfde83b8b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImpl.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanTypeImpl extends TypeImpl implements BooleanType {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected BooleanTypeImpl() {
+ super();
+ setName("boolean");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance createInstance() {
+ return LayersFactory.eINSTANCE.createBooleanInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.BOOLEAN_TYPE;
+ }
+
+} //BooleanTypeImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorImpl.java
new file mode 100644
index 00000000000..5a309e55cb6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorImpl.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Color</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ColorImpl extends TypeImpl implements Color {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected ColorImpl() {
+ super();
+ setName("Color");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance createInstance() {
+ return LayersFactory.eINSTANCE.createColorInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.COLOR;
+ }
+
+} //ColorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorInstanceImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorInstanceImpl.java
new file mode 100644
index 00000000000..d04787283ef
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorInstanceImpl.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Color Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ColorInstanceImpl extends TypeInstanceImpl implements ColorInstance {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected int value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ColorInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.COLOR_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(int newValue) {
+ int oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.COLOR_INSTANCE__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.COLOR_INSTANCE__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.COLOR_INSTANCE__VALUE:
+ setValue((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.COLOR_INSTANCE__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.COLOR_INSTANCE__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromString(String value) {
+
+ if(value==null || value.length()==0) {
+ return;
+ }
+
+ try {
+ setValue(Integer.parseInt(value.trim()));
+ } catch (NumberFormatException e) {
+ // fail silently
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromInstance(TypeInstance value) {
+
+ // Check if the value is of the right instance
+ if( ! getClass().isInstance(value) ) {
+ return;
+ }
+
+ ColorInstance instance = (ColorInstance)value;
+ setValue(instance.getValue());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ColorInstanceImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomLayerOperatorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomLayerOperatorImpl.java
new file mode 100644
index 00000000000..fe05b3e712f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomLayerOperatorImpl.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Custom Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class CustomLayerOperatorImpl extends LayerOperatorImpl implements CustomLayerOperator {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CustomLayerOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.CUSTOM_LAYER_OPERATOR;
+ }
+
+} //CustomLayerOperatorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImpl.java
new file mode 100644
index 00000000000..62d047e704a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImpl.java
@@ -0,0 +1,384 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceException;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Custom Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getClassname <em>Classname</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getOperatorInstance <em>Operator Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getClassBundleID <em>Class Bundle ID</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CustomPropertyOperatorImpl extends PropertyOperatorImpl implements CustomPropertyOperator {
+ /**
+ * The default value of the '{@link #getClassname() <em>Classname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassname()
+ * @generated
+ * @ordered
+ */
+ protected static final String CLASSNAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getClassname() <em>Classname</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassname()
+ * @generated
+ * @ordered
+ */
+ protected String classname = CLASSNAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getOperatorInstance() <em>Operator Instance</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperatorInstance()
+ * @generated
+ * @ordered
+ */
+ protected static final CustomPropertyOperatorsInstance OPERATOR_INSTANCE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getOperatorInstance() <em>Operator Instance</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperatorInstance()
+ * @generated
+ * @ordered
+ */
+ protected CustomPropertyOperatorsInstance operatorInstance = OPERATOR_INSTANCE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getClassBundleID() <em>Class Bundle ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassBundleID()
+ * @generated
+ * @ordered
+ */
+ protected static final String CLASS_BUNDLE_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getClassBundleID() <em>Class Bundle ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassBundleID()
+ * @generated
+ * @ordered
+ */
+ protected String classBundleID = CLASS_BUNDLE_ID_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CustomPropertyOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.CUSTOM_PROPERTY_OPERATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getClassname() {
+ return classname;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setClassname(String newClassname) {
+ String oldClassname = classname;
+ classname = newClassname;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME, oldClassname, classname));
+ // Reset the actual instance
+ setOperatorInstance(null);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public CustomPropertyOperatorsInstance getOperatorInstance() {
+ if(operatorInstance == null) {
+ try {
+ resetOperatorInstance();
+ } catch (LayersException e) {
+ // TODO log the error
+ System.err.println("LOG-" + this.getClass().getName()
+ + "- Can't set custom operator instance '" + e.getMessage() + "'.");
+
+ }
+ }
+
+ return operatorInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOperatorInstance(CustomPropertyOperatorsInstance newOperatorInstance) {
+ CustomPropertyOperatorsInstance oldOperatorInstance = operatorInstance;
+ operatorInstance = newOperatorInstance;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE, oldOperatorInstance, operatorInstance));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getClassBundleID() {
+ return classBundleID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setClassBundleID(String newClassBundleID) {
+ String oldClassBundleID = classBundleID;
+ classBundleID = newClassBundleID;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID, oldClassBundleID, classBundleID));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws LayersException
+ * @generated NOT
+ */
+ public void resetOperatorInstance() throws LayersException {
+ if( getClassname() == null ) {
+ return;
+ }
+
+ Class<?> opClass = loadClass();
+ try {
+ setOperatorInstance((CustomPropertyOperatorsInstance)opClass.newInstance() );
+ } catch (Exception e) {
+ throw new LayersException("Can't create instance for CustomOperator " + getName(), e) ;
+ }
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+ *
+ * @param property
+ * @return
+ * @throws LayersException
+ * @generated NOT
+ */
+ @Override
+ public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException {
+ return getOperatorInstance().getComputePropertyValueCommand(property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+ return getClassname();
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE:
+ return getOperatorInstance();
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+ return getClassBundleID();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+ setClassname((String)newValue);
+ return;
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE:
+ setOperatorInstance((CustomPropertyOperatorsInstance)newValue);
+ return;
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+ setClassBundleID((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+ setClassname(CLASSNAME_EDEFAULT);
+ return;
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE:
+ setOperatorInstance(OPERATOR_INSTANCE_EDEFAULT);
+ return;
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+ setClassBundleID(CLASS_BUNDLE_ID_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+ return CLASSNAME_EDEFAULT == null ? classname != null : !CLASSNAME_EDEFAULT.equals(classname);
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE:
+ return OPERATOR_INSTANCE_EDEFAULT == null ? operatorInstance != null : !OPERATOR_INSTANCE_EDEFAULT.equals(operatorInstance);
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+ return CLASS_BUNDLE_ID_EDEFAULT == null ? classBundleID != null : !CLASS_BUNDLE_ID_EDEFAULT.equals(classBundleID);
+ }
+ return super.eIsSet(featureID);
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR___RESET_OPERATOR_INSTANCE:
+ try {
+ resetOperatorInstance();
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * Load the Class object. Try from current ClassLoader, then try using the
+ * plugin referenced in the serviceDescriptor.PluginId
+ *
+ * @return
+ * @throws ServiceException
+ */
+ private Class<?> loadClass() throws LayersException {
+ String classname = getClassname();
+ Class<?> classDesc;
+ try {
+ classDesc = Class.forName(classname);
+ } catch (ClassNotFoundException e1) {
+ // Try using bundle
+ try {
+ String bundleID = getClassBundleID();
+ Bundle bundle = Platform.getBundle(bundleID);
+ classDesc = bundle.loadClass(classname);
+ } catch (ClassNotFoundException e2) {
+ throw new LayersException("Can't find class for the name '" + classname + "'.", e2);
+ } catch (NullPointerException e) {
+ throw new LayersException("Can't find bundle '"+ getClassBundleID()
+ + "' for class for the name '" + classname + "'.", e);
+ }
+ }
+
+ return classDesc;
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (classname: ");
+ result.append(classname);
+ result.append(", operatorInstance: ");
+ result.append(operatorInstance);
+ result.append(", classBundleID: ");
+ result.append(classBundleID);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CustomPropertyOperatorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomTypeImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomTypeImpl.java
new file mode 100644
index 00000000000..b506f402445
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomTypeImpl.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Custom Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl#getClassifier <em>Classifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CustomTypeImpl extends TypeImpl implements CustomType {
+ /**
+ * The default value of the '{@link #getClassifier() <em>Classifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassifier()
+ * @generated
+ * @ordered
+ */
+ protected static final String CLASSIFIER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getClassifier() <em>Classifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassifier()
+ * @generated
+ * @ordered
+ */
+ protected String classifier = CLASSIFIER_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CustomTypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.CUSTOM_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getClassifier() {
+ return classifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setClassifier(String newClassifier) {
+ String oldClassifier = classifier;
+ classifier = newClassifier;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.CUSTOM_TYPE__CLASSIFIER, oldClassifier, classifier));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+ return getClassifier();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+ setClassifier((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+ setClassifier(CLASSIFIER_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+ return CLASSIFIER_EDEFAULT == null ? classifier != null : !CLASSIFIER_EDEFAULT.equals(classifier);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (classifier: ");
+ result.append(classifier);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CustomTypeImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/DefaultPropertyOperatorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/DefaultPropertyOperatorImpl.java
new file mode 100644
index 00000000000..71ea2c6f33d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/DefaultPropertyOperatorImpl.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Default Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DefaultPropertyOperatorImpl extends PropertyOperatorImpl implements DefaultPropertyOperator {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DefaultPropertyOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.DEFAULT_PROPERTY_OPERATOR;
+ }
+
+} //DefaultPropertyOperatorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillImpl.java
new file mode 100644
index 00000000000..e5fd24f2f68
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillImpl.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fill</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FillImpl extends TypeImpl implements Fill {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected FillImpl() {
+ super();
+ setName("Fill");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance createInstance() {
+ FillInstance instance = LayersFactory.eINSTANCE.createFillInstance();
+ ColorInstance color = LayersFactory.eINSTANCE.createColorInstance();
+ instance.setFillColor(color);
+ return instance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.FILL;
+ }
+
+} //FillImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillInstanceImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillInstanceImpl.java
new file mode 100644
index 00000000000..ee48d5b1245
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillInstanceImpl.java
@@ -0,0 +1,291 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fill Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl#getTransparency <em>Transparency</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl#getFillColor <em>Fill Color</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FillInstanceImpl extends TypeInstanceImpl implements FillInstance {
+ /**
+ * The default value of the '{@link #getTransparency() <em>Transparency</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTransparency()
+ * @generated
+ * @ordered
+ */
+ protected static final int TRANSPARENCY_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getTransparency() <em>Transparency</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTransparency()
+ * @generated
+ * @ordered
+ */
+ protected int transparency = TRANSPARENCY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFillColor() <em>Fill Color</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFillColor()
+ * @generated
+ * @ordered
+ */
+ protected ColorInstance fillColor;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FillInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.FILL_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getTransparency() {
+ return transparency;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTransparency(int newTransparency) {
+ int oldTransparency = transparency;
+ transparency = newTransparency;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FILL_INSTANCE__TRANSPARENCY, oldTransparency, transparency));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ColorInstance getFillColor() {
+ return fillColor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetFillColor(ColorInstance newFillColor, NotificationChain msgs) {
+ ColorInstance oldFillColor = fillColor;
+ fillColor = newFillColor;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.FILL_INSTANCE__FILL_COLOR, oldFillColor, newFillColor);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFillColor(ColorInstance newFillColor) {
+ if (newFillColor != fillColor) {
+ NotificationChain msgs = null;
+ if (fillColor != null)
+ msgs = ((InternalEObject)fillColor).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.FILL_INSTANCE__FILL_COLOR, null, msgs);
+ if (newFillColor != null)
+ msgs = ((InternalEObject)newFillColor).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.FILL_INSTANCE__FILL_COLOR, null, msgs);
+ msgs = basicSetFillColor(newFillColor, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FILL_INSTANCE__FILL_COLOR, newFillColor, newFillColor));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+ return basicSetFillColor(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+ return getTransparency();
+ case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+ return getFillColor();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+ setTransparency((Integer)newValue);
+ return;
+ case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+ setFillColor((ColorInstance)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+ setTransparency(TRANSPARENCY_EDEFAULT);
+ return;
+ case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+ setFillColor((ColorInstance)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+ return transparency != TRANSPARENCY_EDEFAULT;
+ case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+ return fillColor != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromString(String value) {
+
+ if(value==null || value.length()==0) {
+ return;
+ }
+
+ // The value should contains the 2 values, separated by comma
+ // "transparency, fillColor"
+ String[] values = value.split(",");
+ try {
+ setTransparency(Integer.parseInt(values[0].trim()));
+ getFillColor().setValueFromString(values[1]);
+ } catch (NumberFormatException e) {
+ // fail silently
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromInstance(TypeInstance value) {
+
+ // Check if the value is of the right instance
+ if( ! getClass().isInstance(value) ) {
+ return;
+ }
+
+ FillInstance instance = (FillInstance)value;
+ setTransparency(instance.getTransparency());
+ // Set by copy
+ getFillColor().setValueFromInstance(instance.getFillColor());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (transparency: ");
+ result.append(transparency);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FillInstanceImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillPropertySetterImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillPropertySetterImpl.java
new file mode 100644
index 00000000000..3bb2a133063
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillPropertySetterImpl.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fill Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FillPropertySetterImpl extends PropertySetterImpl implements FillPropertySetter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected FillPropertySetterImpl() {
+ super();
+ setPropertyName("fill");
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.FILL_PROPERTY_SETTER;
+ }
+
+ /**
+ * Set the property of the specified view.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ *
+ * @param view
+ * @param value
+ */
+ @Override
+ public void setValue(View view, TypeInstance value) {
+
+
+ FillInstance fillValue = (FillInstance)value;
+
+ if(view instanceof Shape) {
+ Shape shape = (Shape)view;
+ shape.setFillColor(fillValue.getFillColor().getValue());
+ shape.setTransparency(fillValue.getTransparency());
+ }
+
+ }
+} //FillPropertySetterImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderElementImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderElementImpl.java
new file mode 100644
index 00000000000..24d87b57213
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderElementImpl.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class FolderElementImpl extends MinimalEObjectImpl.Container implements FolderElement {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FolderElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.FOLDER_ELEMENT;
+ }
+
+} //FolderElementImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderImpl.java
new file mode 100644
index 00000000000..811ce81b174
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderImpl.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl#getElements <em>Elements</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FolderImpl extends FolderElementImpl implements Folder {
+ /**
+ * The cached value of the '{@link #getElements() <em>Elements</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElements()
+ * @generated
+ * @ordered
+ */
+ protected EList<FolderElement> elements;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FolderImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.FOLDER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<FolderElement> getElements() {
+ if (elements == null) {
+ elements = new EObjectContainmentEList<FolderElement>(FolderElement.class, this, LayersPackage.FOLDER__ELEMENTS);
+ }
+ return elements;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FOLDER__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.FOLDER__ELEMENTS:
+ return ((InternalEList<?>)getElements()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.FOLDER__ELEMENTS:
+ return getElements();
+ case LayersPackage.FOLDER__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.FOLDER__ELEMENTS:
+ getElements().clear();
+ getElements().addAll((Collection<? extends FolderElement>)newValue);
+ return;
+ case LayersPackage.FOLDER__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.FOLDER__ELEMENTS:
+ getElements().clear();
+ return;
+ case LayersPackage.FOLDER__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.FOLDER__ELEMENTS:
+ return elements != null && !elements.isEmpty();
+ case LayersPackage.FOLDER__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FolderImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImpl.java
new file mode 100644
index 00000000000..426b6e54151
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImpl.java
@@ -0,0 +1,378 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Font Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#getFontColor <em>Font Color</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#getFontName <em>Font Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#getFontHeigh <em>Font Heigh</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#isBold <em>Bold</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FontInstanceImpl extends TypeInstanceImpl implements FontInstance {
+ /**
+ * The default value of the '{@link #getFontColor() <em>Font Color</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFontColor()
+ * @generated
+ * @ordered
+ */
+ protected static final int FONT_COLOR_EDEFAULT = 15053796;
+
+ /**
+ * The cached value of the '{@link #getFontColor() <em>Font Color</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFontColor()
+ * @generated
+ * @ordered
+ */
+ protected int fontColor = FONT_COLOR_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFontName() <em>Font Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFontName()
+ * @generated
+ * @ordered
+ */
+ protected static final String FONT_NAME_EDEFAULT = "Segoe UI";
+
+ /**
+ * The cached value of the '{@link #getFontName() <em>Font Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFontName()
+ * @generated
+ * @ordered
+ */
+ protected String fontName = FONT_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFontHeigh() <em>Font Heigh</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFontHeigh()
+ * @generated
+ * @ordered
+ */
+ protected static final int FONT_HEIGH_EDEFAULT = 9;
+
+ /**
+ * The cached value of the '{@link #getFontHeigh() <em>Font Heigh</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFontHeigh()
+ * @generated
+ * @ordered
+ */
+ protected int fontHeigh = FONT_HEIGH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isBold() <em>Bold</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isBold()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean BOLD_EDEFAULT = true;
+
+ /**
+ * The cached value of the '{@link #isBold() <em>Bold</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isBold()
+ * @generated
+ * @ordered
+ */
+ protected boolean bold = BOLD_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FontInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.FONT_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getFontColor() {
+ return fontColor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFontColor(int newFontColor) {
+ int oldFontColor = fontColor;
+ fontColor = newFontColor;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FONT_INSTANCE__FONT_COLOR, oldFontColor, fontColor));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getFontName() {
+ return fontName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFontName(String newFontName) {
+ String oldFontName = fontName;
+ fontName = newFontName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FONT_INSTANCE__FONT_NAME, oldFontName, fontName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getFontHeigh() {
+ return fontHeigh;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFontHeigh(int newFontHeigh) {
+ int oldFontHeigh = fontHeigh;
+ fontHeigh = newFontHeigh;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FONT_INSTANCE__FONT_HEIGH, oldFontHeigh, fontHeigh));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isBold() {
+ return bold;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBold(boolean newBold) {
+ boolean oldBold = bold;
+ bold = newBold;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FONT_INSTANCE__BOLD, oldBold, bold));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+ return getFontColor();
+ case LayersPackage.FONT_INSTANCE__FONT_NAME:
+ return getFontName();
+ case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+ return getFontHeigh();
+ case LayersPackage.FONT_INSTANCE__BOLD:
+ return isBold();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+ setFontColor((Integer)newValue);
+ return;
+ case LayersPackage.FONT_INSTANCE__FONT_NAME:
+ setFontName((String)newValue);
+ return;
+ case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+ setFontHeigh((Integer)newValue);
+ return;
+ case LayersPackage.FONT_INSTANCE__BOLD:
+ setBold((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+ setFontColor(FONT_COLOR_EDEFAULT);
+ return;
+ case LayersPackage.FONT_INSTANCE__FONT_NAME:
+ setFontName(FONT_NAME_EDEFAULT);
+ return;
+ case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+ setFontHeigh(FONT_HEIGH_EDEFAULT);
+ return;
+ case LayersPackage.FONT_INSTANCE__BOLD:
+ setBold(BOLD_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+ return fontColor != FONT_COLOR_EDEFAULT;
+ case LayersPackage.FONT_INSTANCE__FONT_NAME:
+ return FONT_NAME_EDEFAULT == null ? fontName != null : !FONT_NAME_EDEFAULT.equals(fontName);
+ case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+ return fontHeigh != FONT_HEIGH_EDEFAULT;
+ case LayersPackage.FONT_INSTANCE__BOLD:
+ return bold != BOLD_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromString(String value) {
+
+ if(value==null || value.length()==0) {
+ return;
+ }
+
+ // The value should contains the values, separated by comma
+ // "FontName, FontHeight, FontColor, Bold"
+ String[] values = value.split(",");
+ int i=0;
+ try {
+ setFontName(values[i++].trim());
+ setFontHeigh(Integer.parseInt(values[i++].trim()));
+ setFontColor(Integer.parseInt(values[i++].trim()));
+ setBold(Boolean.parseBoolean(values[i++].trim()));
+ } catch (NumberFormatException e) {
+ // fail silently
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromInstance(TypeInstance value) {
+
+ // Check if the value is of the right instance
+ if( ! getClass().isInstance(value) ) {
+ return;
+ }
+
+ FontInstance instance = (FontInstance)value;
+ setFontName(instance.getFontName());
+ setFontHeigh(instance.getFontHeigh());
+ setFontColor(instance.getFontColor());
+ setBold(instance.isBold());
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (fontColor: ");
+ result.append(fontColor);
+ result.append(", fontName: ");
+ result.append(fontName);
+ result.append(", fontHeigh: ");
+ result.append(fontHeigh);
+ result.append(", bold: ");
+ result.append(bold);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FontInstanceImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontPropertySetterImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontPropertySetterImpl.java
new file mode 100644
index 00000000000..10621cbbacc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontPropertySetterImpl.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Font Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FontPropertySetterImpl extends PropertySetterImpl implements FontPropertySetter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected FontPropertySetterImpl() {
+ super();
+ setPropertyName("font");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.FONT_PROPERTY_SETTER;
+ }
+
+ /**
+ * Set the property of the specified view.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ *
+ * @param view
+ * @param value
+ */
+ @Override
+ public void setValue(View view, TypeInstance value) {
+
+
+ FontInstance lineValue = (FontInstance)value;
+
+ if(view instanceof Shape) {
+ Shape shape = (Shape)view;
+
+
+ shape.setFontColor(lineValue.getFontColor());
+ shape.setFontName(lineValue.getFontName());
+ shape.setFontHeight(lineValue.getFontHeigh());
+ shape.setBold(lineValue.isBold());
+ }
+
+ }
+
+} //FontPropertySetterImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontTypeImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontTypeImpl.java
new file mode 100644
index 00000000000..c43ac66dc19
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontTypeImpl.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Font Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FontTypeImpl extends TypeImpl implements FontType {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected FontTypeImpl() {
+ super();
+ setName("FontType");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.FONT_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance createInstance() {
+ FontInstance instance = LayersFactory.eINSTANCE.createFontInstance();
+ return instance;
+ }
+
+} //FontTypeImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntInstanceImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntInstanceImpl.java
new file mode 100644
index 00000000000..6098790010d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntInstanceImpl.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Int Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IntInstanceImpl extends TypeInstanceImpl implements IntInstance {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected int value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.INT_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(int newValue) {
+ int oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.INT_INSTANCE__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.INT_INSTANCE__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.INT_INSTANCE__VALUE:
+ setValue((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.INT_INSTANCE__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.INT_INSTANCE__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromString(String value) {
+
+ if(value==null || value.length()==0) {
+ return;
+ }
+
+ try {
+ setValue(Integer.parseInt(value.trim()));
+ } catch (NumberFormatException e) {
+ // fail silently
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromInstance(TypeInstance value) {
+
+ // Check if the value is of the right instance
+ if( ! getClass().isInstance(value) ) {
+ return;
+ }
+
+ IntInstance instance = (IntInstance)value;
+ setValue(instance.getValue());
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //IntInstanceImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImpl.java
new file mode 100644
index 00000000000..566aec34453
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImpl.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Int Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IntTypeImpl extends TypeImpl implements IntType {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected IntTypeImpl() {
+ super();
+ setName("int");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance createInstance() {
+ return LayersFactory.eINSTANCE.createIntInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.INT_TYPE;
+ }
+
+} //IntTypeImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsAbstractUmlSetterImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsAbstractUmlSetterImpl.java
new file mode 100644
index 00000000000..2d452bc77d7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsAbstractUmlSetterImpl.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+import org.eclipse.uml2.uml.Classifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>is Abstract Uml Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IsAbstractUmlSetterImpl extends PropertySetterImpl implements IsAbstractUmlSetter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected IsAbstractUmlSetterImpl() {
+ super();
+ setPropertyName("isAbstract");
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.IS_ABSTRACT_UML_SETTER;
+ }
+
+ /**
+ * Set the property of the specified view.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ *
+ * @param view
+ * @param value
+ */
+ @Override
+ public void setValue(View view, TypeInstance value) {
+
+
+ BooleanInstance boolValue = (BooleanInstance)value;
+
+ EObject ele = view.getElement();
+ if( ele instanceof Classifier) {
+ Classifier classifier = (Classifier)ele;
+ classifier.setIsAbstract(boolValue.isValue());
+ }
+
+ }
+
+} //IsAbstractUmlSetterImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsValidPropertySetterImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsValidPropertySetterImpl.java
new file mode 100644
index 00000000000..b564b0eb9ef
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsValidPropertySetterImpl.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Is Valid Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IsValidPropertySetterImpl extends PropertySetterImpl implements IsValidPropertySetter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected IsValidPropertySetterImpl() {
+ super();
+ setPropertyName("isValid");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.IS_VALID_PROPERTY_SETTER;
+ }
+
+
+ /**
+ * Set the value in the view
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ *
+ * @param view
+ * @param value
+ */
+ @Override
+ public void setValue(View view, TypeInstance value) {
+ // TODO implements this method
+ }
+} //IsValidPropertySetterImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsVisiblePropertySetterImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsVisiblePropertySetterImpl.java
new file mode 100644
index 00000000000..5a99a9beb99
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsVisiblePropertySetterImpl.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.Connector;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Is Visible Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IsVisiblePropertySetterImpl extends PropertySetterImpl implements IsVisiblePropertySetter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected IsVisiblePropertySetterImpl() {
+ super();
+ setPropertyName("isVisible");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.IS_VISIBLE_PROPERTY_SETTER;
+ }
+
+ /**
+ * Set the property of the specified view.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ *
+ * @param view
+ * @param value
+ */
+ @Override
+ public void setValue(View view, TypeInstance value) {
+
+
+ BooleanInstance boolValue = (BooleanInstance)value;
+
+ if(view instanceof Shape || view instanceof Connector) {
+ // We restrict to Shape and Connector
+ view.setVisible(boolValue.isValue());
+ }
+
+ }
+
+} //IsVisiblePropertySetterImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerApplicationFactoryImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerApplicationFactoryImpl.java
new file mode 100644
index 00000000000..01e31e92257
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerApplicationFactoryImpl.java
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Application Factory</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerApplicationFactoryImpl extends MinimalEObjectImpl.Container implements LayerApplicationFactory {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerApplicationFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER_APPLICATION_FACTORY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStackApplication getApplication() {
+ if (eContainerFeatureID() != LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION) return null;
+ return (LayersStackApplication)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetApplication(LayersStackApplication newApplication, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newApplication, LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setApplication(LayersStackApplication newApplication) {
+ if (newApplication != eInternalContainer() || (eContainerFeatureID() != LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION && newApplication != null)) {
+ if (EcoreUtil.isAncestor(this, newApplication))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newApplication != null)
+ msgs = ((InternalEObject)newApplication).eInverseAdd(this, LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, LayersStackApplication.class, msgs);
+ msgs = basicSetApplication(newApplication, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION, newApplication, newApplication));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetApplication((LayersStackApplication)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+ return basicSetApplication(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+ return eInternalContainer().eInverseRemove(this, LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, LayersStackApplication.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+ return getApplication();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+ setApplication((LayersStackApplication)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+ setApplication((LayersStackApplication)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+ return getApplication() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //LayerApplicationFactoryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorImpl.java
new file mode 100644
index 00000000000..289e68116c9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorImpl.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl#getPropertyRegistry <em>Property Registry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerDescriptorImpl extends MinimalEObjectImpl.Container implements LayerDescriptor {
+ /**
+ * The cached value of the '{@link #getPropertyRegistry() <em>Property Registry</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyRegistry()
+ * @generated
+ * @ordered
+ */
+ protected PropertyRegistry propertyRegistry;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerDescriptorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER_DESCRIPTOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyRegistry getPropertyRegistry() {
+ if (propertyRegistry != null && propertyRegistry.eIsProxy()) {
+ InternalEObject oldPropertyRegistry = (InternalEObject)propertyRegistry;
+ propertyRegistry = (PropertyRegistry)eResolveProxy(oldPropertyRegistry);
+ if (propertyRegistry != oldPropertyRegistry) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY, oldPropertyRegistry, propertyRegistry));
+ }
+ }
+ return propertyRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyRegistry basicGetPropertyRegistry() {
+ return propertyRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPropertyRegistry(PropertyRegistry newPropertyRegistry) {
+ PropertyRegistry oldPropertyRegistry = propertyRegistry;
+ propertyRegistry = newPropertyRegistry;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY, oldPropertyRegistry, propertyRegistry));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY:
+ if (resolve) return getPropertyRegistry();
+ return basicGetPropertyRegistry();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY:
+ setPropertyRegistry((PropertyRegistry)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY:
+ setPropertyRegistry((PropertyRegistry)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY:
+ return propertyRegistry != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //LayerDescriptorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorRegistryImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorRegistryImpl.java
new file mode 100644
index 00000000000..4c283335310
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorRegistryImpl.java
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl#getLayerDescriptors <em>Layer Descriptors</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerDescriptorRegistryImpl extends MinimalEObjectImpl.Container implements LayerDescriptorRegistry {
+ /**
+ * The cached value of the '{@link #getLayerDescriptors() <em>Layer Descriptors</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayerDescriptors()
+ * @generated
+ * @ordered
+ */
+ protected EList<LayerDescriptor> layerDescriptors;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerDescriptorRegistryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<LayerDescriptor> getLayerDescriptors() {
+ if (layerDescriptors == null) {
+ layerDescriptors = new EObjectContainmentEList<LayerDescriptor>(LayerDescriptor.class, this, LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS);
+ }
+ return layerDescriptors;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+ return ((InternalEList<?>)getLayerDescriptors()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+ return getLayerDescriptors();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+ getLayerDescriptors().clear();
+ getLayerDescriptors().addAll((Collection<? extends LayerDescriptor>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+ getLayerDescriptors().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+ return layerDescriptors != null && !layerDescriptors.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //LayerDescriptorRegistryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionImpl.java
new file mode 100644
index 00000000000..5f312839910
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionImpl.java
@@ -0,0 +1,786 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isLayerEnabledInternal <em>Is Layer Enabled Internal</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isLayerEnabled <em>Is Layer Enabled</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isBranchEnabled <em>Is Branch Enabled</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getOwningLayersStack <em>Owning Layers Stack</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LayerExpressionImpl extends
+ApplicationDependantElementImpl implements LayerExpression {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+ /**
+ * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isLayerEnabledInternal() <em>Is Layer Enabled Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isLayerEnabledInternal()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean IS_LAYER_ENABLED_INTERNAL_EDEFAULT = false;
+ /**
+ * The default value of the '{@link #isLayerEnabled() <em>Is Layer Enabled</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isLayerEnabled()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean IS_LAYER_ENABLED_EDEFAULT = true;
+ /**
+ * The cached value of the '{@link #isLayerEnabled() <em>Is Layer Enabled</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isLayerEnabled()
+ * @generated
+ * @ordered
+ */
+ protected boolean isLayerEnabled = IS_LAYER_ENABLED_EDEFAULT;
+ /**
+ * The default value of the '{@link #isBranchEnabled() <em>Is Branch Enabled</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isBranchEnabled()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean IS_BRANCH_ENABLED_EDEFAULT = true;
+ /**
+ * The cached value of the '{@link #isBranchEnabled() <em>Is Branch Enabled</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isBranchEnabled()
+ * @generated
+ * @ordered
+ */
+ protected boolean isBranchEnabled = IS_BRANCH_ENABLED_EDEFAULT;
+ /**
+ * The cached value of the '{@link #getOwningLayersStack() <em>Owning Layers Stack</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOwningLayersStack()
+ * @generated
+ * @ordered
+ */
+ protected LayersStack owningLayersStack;
+
+ /**
+ * The default value of the '{@link #getState() <em>State</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getState()
+ * @generated
+ * @ordered
+ */
+ protected static final LayerState STATE_EDEFAULT = LayerState.DETACHED;
+ /**
+ * The cached value of the '{@link #getState() <em>State</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getState()
+ * @generated
+ * @ordered
+ */
+ protected LayerState state = STATE_EDEFAULT;
+ /**
+ * Listener on this object container (i.e owner) attached/detached events
+ */
+ protected Adapter containerListener = new AdapterImpl() {
+ public void notifyChanged(Notification msg) {
+
+ switch(msg.getFeatureID(LayerExpression.class)) {
+ case EcorePackage.EOBJECT___ECONTAINER :
+ switch(msg.getEventType()) {
+ case Notification.SET:
+ //
+ owningLayerChanged((LayerOperator)msg.getNewValue(), (LayerOperator)msg.getOldValue());
+ break;
+
+ case Notification.UNSET:
+ owningLayerChanged((LayerOperator)msg.getNewValue(), (LayerOperator)msg.getOldValue());
+ break;
+
+ default:
+ break;
+ }
+ break;
+ };
+ }
+
+ };
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected LayerExpressionImpl() {
+ super();
+
+ // Listen on this object attachment / detachment from its container.
+ // When this node is atttached to a parent, the owningLayerStack property is set.
+ // This is done in owningLayerChanged.
+ eAdapters().add(containerListener);
+
+ }
+
+ /**
+ * Start the behaviors associated to this layer.
+ * This method is called by one of the methods: {@link #startAfterReloading()} or {@link #attachToLayersStack(LayersStack)}.
+ */
+ protected void startBehaviors() {
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isLayerEnabledInternal() {
+ return isLayerEnabled();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isLayerEnabled() {
+ return isLayerEnabled;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setIsLayerEnabled(boolean newIsLayerEnabled) {
+ boolean oldIsLayerEnabled = isLayerEnabled;
+ isLayerEnabled = newIsLayerEnabled;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED, oldIsLayerEnabled, isLayerEnabled));
+
+ // Disable the branch
+ setIsBranchEnabled(isLayerEnabled);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isBranchEnabled() {
+ return isBranchEnabled;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setIsBranchEnabled(boolean newIsBranchEnabled) {
+ boolean oldIsBranchEnabled = isBranchEnabled;
+ isBranchEnabled = newIsBranchEnabled;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED, oldIsBranchEnabled, isBranchEnabled));
+
+ // Propagate to children.
+ // This is done in LayerOperation.
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStack getOwningLayersStack() {
+ if (owningLayersStack != null && owningLayersStack.eIsProxy()) {
+ InternalEObject oldOwningLayersStack = (InternalEObject)owningLayersStack;
+ owningLayersStack = (LayersStack)eResolveProxy(oldOwningLayersStack);
+ if (owningLayersStack != oldOwningLayersStack) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK, oldOwningLayersStack, owningLayersStack));
+ }
+ }
+ return owningLayersStack;
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStack basicGetOwningLayersStack() {
+ return owningLayersStack;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOwningLayersStack(LayersStack newOwningLayersStack) {
+ LayersStack oldOwningLayersStack = owningLayersStack;
+ owningLayersStack = newOwningLayersStack;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK, oldOwningLayersStack, owningLayersStack));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerState getState() {
+ return state;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setState(LayerState newState) {
+ LayerState oldState = state;
+ state = newState == null ? STATE_EDEFAULT : newState;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__STATE, oldState, state));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public LayersStack getLayersStack() throws NotFoundException {
+
+ LayersStack res = getOwningLayersStack();
+ if( res != null) {
+ return res;
+ }
+
+ throw new NotFoundException("LayersStack is not set in the Layer '" + getName() +"'");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void enterAttachedState() throws LayersException {
+ // do nothing
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void attach() throws LayersException {
+
+ // Stop if already in ATTACHED state.
+ if(getState() == LayerState.ATTACHED) {
+ return;
+ }
+
+ // Check required attributes
+ if( getApplication()==null || getOwningLayersStack() == null || eContainer() == null) {
+ throw new BadStateException("A required attribute is not set. The Layer can't be attached."
+ + "[layerName=" + getName()
+ + ", application=" + (getApplication()==null?"null":"ok")
+ + ", owningLayersStack=" + (getOwningLayersStack()==null?"null":"ok")
+ + ", container=" + (eContainer()==null?"null":"ok")
+ + "]"
+ );
+ }
+
+ // Can go in attached mode
+ setState(LayerState.ATTACHED);
+ enterAttachedState();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Subclass can overload in order to stop some behaviors.
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void detach() throws LayersException {
+
+
+ // Change the state
+ exitAttachedState();
+ setState(LayerState.DETACHED);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void exitAttachedState() {
+ // do nothing.
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Start this element after its reloading by EMF
+ * This method is called recursively by the parent of this element.
+ * <br>
+ * This default implementation start the associated behaviors.
+ *
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void startAfterReloading() {
+ startBehaviors();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(EList<View> view, Property property) throws LayersException {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, EList<Property> property) throws LayersException {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * This default implementation set the layerStack, and start behaviors.
+ * This method can be overriden by subclasses. In this case, subclass must ensure that
+ * the {@link #owningLayersStack} is set and the behaviors are started.
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void attachToLayersStack(LayersStack owningLayersStack) {
+
+ // the owning stack
+ setOwningLayersStack(owningLayersStack);
+
+ // Start associated behavior
+ startBehaviors();
+ }
+
+ /**
+ * Init this Layer.
+ * Called by the LayerStack as soon as the layer is added in the tree of layers.
+ * This method can be subclassed to init a particular layer.
+ *
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void initLayer(LayersStack owningLayersStack) {
+
+ // the owning stack
+ setOwningLayersStack(owningLayersStack);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> view, Property property) throws LayersException {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> property) throws LayersException {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYER_EXPRESSION__NAME:
+ return getName();
+ case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+ return getDescription();
+ case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL:
+ return isLayerEnabledInternal();
+ case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+ return isLayerEnabled();
+ case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+ return isBranchEnabled();
+ case LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK:
+ if (resolve) return getOwningLayersStack();
+ return basicGetOwningLayersStack();
+ case LayersPackage.LAYER_EXPRESSION__STATE:
+ return getState();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYER_EXPRESSION__NAME:
+ setName((String)newValue);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+ setDescription((String)newValue);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+ setIsLayerEnabled((Boolean)newValue);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+ setIsBranchEnabled((Boolean)newValue);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK:
+ setOwningLayersStack((LayersStack)newValue);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__STATE:
+ setState((LayerState)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_EXPRESSION__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+ setIsLayerEnabled(IS_LAYER_ENABLED_EDEFAULT);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+ setIsBranchEnabled(IS_BRANCH_ENABLED_EDEFAULT);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK:
+ setOwningLayersStack((LayersStack)null);
+ return;
+ case LayersPackage.LAYER_EXPRESSION__STATE:
+ setState(STATE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_EXPRESSION__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL:
+ return isLayerEnabledInternal() != IS_LAYER_ENABLED_INTERNAL_EDEFAULT;
+ case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+ return isLayerEnabled != IS_LAYER_ENABLED_EDEFAULT;
+ case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+ return isBranchEnabled != IS_BRANCH_ENABLED_EDEFAULT;
+ case LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK:
+ return owningLayersStack != null;
+ case LayersPackage.LAYER_EXPRESSION__STATE:
+ return state != STATE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY:
+ try {
+ return getComputePropertyValueCommand((View)arguments.get(0), (Property)arguments.get(1));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY:
+ try {
+ return getViewsComputePropertyValueCommand((EList<View>)arguments.get(0), (Property)arguments.get(1));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST:
+ try {
+ return getPropertiesComputePropertyValueCommand((View)arguments.get(0), (EList<Property>)arguments.get(1));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK:
+ attachToLayersStack((LayersStack)arguments.get(0));
+ return null;
+ case LayersPackage.LAYER_EXPRESSION___GET_LAYERS_STACK:
+ try {
+ return getLayersStack();
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_EXPRESSION___ENTER_ATTACHED_STATE:
+ try {
+ enterAttachedState();
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_EXPRESSION___ATTACH:
+ try {
+ attach();
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_EXPRESSION___DETACH:
+ try {
+ detach();
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_EXPRESSION___EXIT_ATTACHED_STATE:
+ exitAttachedState();
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", description: ");
+ result.append(description);
+ result.append(", isLayerEnabled: ");
+ result.append(isLayerEnabled);
+ result.append(", isBranchEnabled: ");
+ result.append(isBranchEnabled);
+ result.append(", state: ");
+ result.append(state);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * This method is called when the container of this parent has changed.
+ * Set the #owningLayerStack property and the {@link #isBranchEnabled()} property
+ * @param newValue
+ * @param oldValue
+ */
+ private void owningLayerChanged(LayerOperator newParent, LayerOperator oldParent) {
+ // propagate values
+ if (newParent != null ) {
+ setOwningLayersStack(newParent.getOwningLayersStack());
+ setIsBranchEnabled(newParent.isBranchEnabled());
+ }
+ };
+
+} //LayerExpressionImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImpl.java
new file mode 100644
index 00000000000..c884f7a2ca1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImpl.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerImpl extends AbstractLayerImpl implements Layer {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected LayerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER;
+ }
+
+
+} //LayerImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerNamedStyleImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerNamedStyleImpl.java
new file mode 100644
index 00000000000..92d0387d913
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerNamedStyleImpl.java
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.gmf.runtime.notation.impl.NamedStyleImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Named Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl#getLayersStack <em>Layers Stack</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerNamedStyleImpl extends NamedStyleImpl implements LayerNamedStyle {
+ /**
+ * The cached value of the '{@link #getLayersStack() <em>Layers Stack</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayersStack()
+ * @generated
+ * @ordered
+ */
+ protected EList<LayersStack> layersStack;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerNamedStyleImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER_NAMED_STYLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<LayersStack> getLayersStack() {
+ if (layersStack == null) {
+ layersStack = new EObjectContainmentEList<LayersStack>(LayersStack.class, this, LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK);
+ }
+ return layersStack;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+ return ((InternalEList<?>)getLayersStack()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+ return getLayersStack();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+ getLayersStack().clear();
+ getLayersStack().addAll((Collection<? extends LayersStack>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+ getLayersStack().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+ return layersStack != null && !layersStack.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //LayerNamedStyleImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImpl.java
new file mode 100644
index 00000000000..be75257fa70
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImpl.java
@@ -0,0 +1,310 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getPropertyOperators <em>Property Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorDescriptorImpl extends MinimalEObjectImpl.Container implements LayerOperatorDescriptor {
+
+ /**
+ * The cached value of the '{@link #getPropertyOperators() <em>Property Operators</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyOperators()
+ * @generated
+ * @ordered
+ */
+ protected EList<PropertyOperator> propertyOperators;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorDescriptorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<PropertyOperator> getPropertyOperators() {
+ if (propertyOperators == null) {
+ propertyOperators = new EObjectResolvingEList<PropertyOperator>(PropertyOperator.class, this, LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS) {
+ // Allows double
+ @Override
+ protected boolean isUnique() {
+ return false;
+ }
+
+ };
+ }
+ return propertyOperators;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public PropertyOperator getPropertyOperator(Property property) throws NotFoundException {
+ try {
+ return getPropertyOperators().get(property.getIndex());
+ } catch (IndexOutOfBoundsException e) {
+ throw new NotFoundException("Can't find operator for property '" + property.getName()+ "' at index " + property.getIndex());
+ }
+ }
+
+ /**
+ * Set the operator at the property's index.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setPropertyOperator(Property property, PropertyOperator operator) {
+
+ // Set the operator at the property's index.
+ getPropertyOperators().set(property.getIndex(), operator);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractLayerOperator createLayerOperator() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Initialize all list indexed by Properties'index.
+ * Increase the actual list in order that they can contains the specified number of properties.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setPropertyCollectionSize(int size, DefaultPropertyOperator defaultPropertyOperator) {
+
+ List<PropertyOperator> operators = getPropertyOperators();
+ int actualSize = operators.size();
+ // Check if we need to increase the size.
+ if( actualSize>=size) {
+ // do nothing
+ return;
+ }
+
+ // Add missing elements
+ for (int i=actualSize; i<size; i++) {
+ operators.add(defaultPropertyOperator);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS:
+ return getPropertyOperators();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS:
+ getPropertyOperators().clear();
+ getPropertyOperators().addAll((Collection<? extends PropertyOperator>)newValue);
+ return;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS:
+ getPropertyOperators().clear();
+ return;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS:
+ return propertyOperators != null && !propertyOperators.isEmpty();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY:
+ try {
+ return getPropertyOperator((Property)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR:
+ setPropertyOperator((Property)arguments.get(0), (PropertyOperator)arguments.get(1));
+ return null;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR:
+ return createLayerOperator();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR:
+ setPropertyCollectionSize((Integer)arguments.get(0), (DefaultPropertyOperator)arguments.get(1));
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //LayerOperatorDescriptorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImpl.java
new file mode 100644
index 00000000000..d579290f95d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImpl.java
@@ -0,0 +1,465 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getDescriptors <em>Descriptors</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyOperators <em>Property Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyCollectionSize <em>Property Collection Size</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getDefaultOperator <em>Default Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorDescriptorRegistryImpl extends MinimalEObjectImpl.Container implements LayerOperatorDescriptorRegistry {
+ /**
+ * The cached value of the '{@link #getDescriptors() <em>Descriptors</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescriptors()
+ * @generated
+ * @ordered
+ */
+ protected EList<LayerOperatorDescriptor> descriptors;
+
+ /**
+ * The cached value of the '{@link #getPropertyOperators() <em>Property Operators</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyOperators()
+ * @generated
+ * @ordered
+ */
+ protected EList<PropertyOperator> propertyOperators;
+
+ /**
+ * The default value of the '{@link #getPropertyCollectionSize() <em>Property Collection Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyCollectionSize()
+ * @generated
+ * @ordered
+ */
+ protected static final int PROPERTY_COLLECTION_SIZE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getPropertyCollectionSize() <em>Property Collection Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyCollectionSize()
+ * @generated
+ * @ordered
+ */
+ protected int propertyCollectionSize = PROPERTY_COLLECTION_SIZE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDefaultOperator() <em>Default Operator</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultOperator()
+ * @generated
+ * @ordered
+ */
+ protected DefaultPropertyOperator defaultOperator;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected LayerOperatorDescriptorRegistryImpl() {
+ super();
+ // Set the defaultOperator
+ defaultOperator = LayersFactory.eINSTANCE.createDefaultPropertyOperator();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<LayerOperatorDescriptor> getDescriptors() {
+ if (descriptors == null) {
+ descriptors = new EObjectContainmentEList<LayerOperatorDescriptor>(LayerOperatorDescriptor.class, this, LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS);
+ }
+ return descriptors;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<PropertyOperator> getPropertyOperators() {
+ if (propertyOperators == null) {
+ propertyOperators = new EObjectContainmentEList<PropertyOperator>(PropertyOperator.class, this, LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS);
+ }
+ return propertyOperators;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getPropertyCollectionSize() {
+ return propertyCollectionSize;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setPropertyCollectionSize(int newPropertyCollectionSize) {
+ int oldPropertyCollectionSize = propertyCollectionSize;
+ propertyCollectionSize = newPropertyCollectionSize;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE, oldPropertyCollectionSize, propertyCollectionSize));
+
+ // Propagate the size to registered LayerOperator
+ if( newPropertyCollectionSize>oldPropertyCollectionSize) {
+ for( LayerOperatorDescriptor descriptor : getDescriptors() ) {
+ descriptor.setPropertyCollectionSize(newPropertyCollectionSize, getDefaultOperator());
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultPropertyOperator getDefaultOperator() {
+ if (defaultOperator != null && defaultOperator.eIsProxy()) {
+ InternalEObject oldDefaultOperator = (InternalEObject)defaultOperator;
+ defaultOperator = (DefaultPropertyOperator)eResolveProxy(oldDefaultOperator);
+ if (defaultOperator != oldDefaultOperator) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR, oldDefaultOperator, defaultOperator));
+ }
+ }
+ return defaultOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultPropertyOperator basicGetDefaultOperator() {
+ return defaultOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addLayerOperatorDescriptor(LayerOperatorDescriptor descriptor) {
+
+ // Ensure descriptor size
+ descriptor.setPropertyCollectionSize(getPropertyCollectionSize(), getDefaultOperator());
+ // Add descriptor
+ getDescriptors().add(descriptor);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public LayerOperatorDescriptor getLayerOperatorDescriptor(String name) throws NotFoundException {
+ if(name == null) {
+ throw new NotFoundException("Can't find LayerOperatorDescriptor for name 'null'.");
+ }
+ for( LayerOperatorDescriptor descriptor : getDescriptors() ) {
+ if( name.equals(descriptor.getName())) {
+ return descriptor;
+ }
+ }
+ // Not found
+ throw new NotFoundException("Can't find LayerOperatorDescriptor for name '" + name + "'.");
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addPropertyOperator(PropertyOperator operator) {
+ getPropertyOperators().add(operator);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public PropertyOperator getPropertyOperator(String name) throws NotFoundException {
+
+ if(name == null) {
+ throw new NotFoundException("Can't find PropertyOperator for name 'null'.");
+ }
+ for( PropertyOperator op : getPropertyOperators() ) {
+ if( name.equals(op.getName())) {
+ return op;
+ }
+ }
+ // Not found
+ throw new NotFoundException("Can't find PropertyOperator for name '" + name + "'.");
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws NotFoundException
+ * @generated NOT
+ */
+ public void attachOperatorToDescriptor(Property property, String operatorName, String layerDescriptorName) throws NotFoundException {
+
+ // Ensure that PropertiesCollectionSize can contain the property index.
+ if( getPropertyCollectionSize() <= property.getIndex()) {
+ setPropertyCollectionSize(property.getIndex());
+ }
+
+ // Attach the operator to the LayerOperator
+ PropertyOperator op = getPropertyOperator(operatorName);
+ LayerOperatorDescriptor layerOp = getLayerOperatorDescriptor(layerDescriptorName);
+
+ layerOp.setPropertyOperator(property, op);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public AbstractLayerOperator createLayerOperator(String layerOperatorID) throws LayersException {
+
+ LayerOperatorDescriptor desc = getLayerOperatorDescriptor(layerOperatorID);
+
+ AbstractLayerOperator newLayerOperator = desc.createLayerOperator();
+
+// newLayerOperator.setApplication();
+ return newLayerOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+ return ((InternalEList<?>)getDescriptors()).basicRemove(otherEnd, msgs);
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+ return ((InternalEList<?>)getPropertyOperators()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+ return getDescriptors();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+ return getPropertyOperators();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+ return getPropertyCollectionSize();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR:
+ if (resolve) return getDefaultOperator();
+ return basicGetDefaultOperator();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+ getDescriptors().clear();
+ getDescriptors().addAll((Collection<? extends LayerOperatorDescriptor>)newValue);
+ return;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+ getPropertyOperators().clear();
+ getPropertyOperators().addAll((Collection<? extends PropertyOperator>)newValue);
+ return;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+ setPropertyCollectionSize((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+ getDescriptors().clear();
+ return;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+ getPropertyOperators().clear();
+ return;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+ setPropertyCollectionSize(PROPERTY_COLLECTION_SIZE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+ return descriptors != null && !descriptors.isEmpty();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+ return propertyOperators != null && !propertyOperators.isEmpty();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+ return propertyCollectionSize != PROPERTY_COLLECTION_SIZE_EDEFAULT;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR:
+ return defaultOperator != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_LAYER_OPERATOR_DESCRIPTOR__LAYEROPERATORDESCRIPTOR:
+ addLayerOperatorDescriptor((LayerOperatorDescriptor)arguments.get(0));
+ return null;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_LAYER_OPERATOR_DESCRIPTOR__STRING:
+ try {
+ return getLayerOperatorDescriptor((String)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_PROPERTY_OPERATOR__PROPERTYOPERATOR:
+ addPropertyOperator((PropertyOperator)arguments.get(0));
+ return null;
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_PROPERTY_OPERATOR__STRING:
+ try {
+ return getPropertyOperator((String)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ATTACH_OPERATOR_TO_DESCRIPTOR__PROPERTY_STRING_STRING:
+ try {
+ attachOperatorToDescriptor((Property)arguments.get(0), (String)arguments.get(1), (String)arguments.get(2));
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___CREATE_LAYER_OPERATOR__STRING:
+ try {
+ return createLayerOperator((String)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (propertyCollectionSize: ");
+ result.append(propertyCollectionSize);
+ result.append(')');
+ return result.toString();
+ }
+
+} //LayerOperatorDescriptorRegistryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorImpl.java
new file mode 100644
index 00000000000..0131eaa69df
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorImpl.java
@@ -0,0 +1,311 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl#getLayers <em>Layers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LayerOperatorImpl extends LayerExpressionImpl implements LayerOperator {
+ /**
+ * The cached value of the '{@link #getLayers() <em>Layers</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayers()
+ * @generated
+ * @ordered
+ */
+ protected EList<LayerExpression> layers;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER_OPERATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<LayerExpression> getLayers() {
+ if (layers == null) {
+ layers = new EObjectContainmentEList<LayerExpression>(LayerExpression.class, this, LayersPackage.LAYER_OPERATOR__LAYERS);
+ }
+ return layers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addLayer(LayerExpression layer) {
+// getLayers().add(layer);
+ // Add layer on top of the stack.
+ getLayers().add(0, layer);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR__LAYERS:
+ return ((InternalEList<?>)getLayers()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR__LAYERS:
+ return getLayers();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR__LAYERS:
+ getLayers().clear();
+ getLayers().addAll((Collection<? extends LayerExpression>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR__LAYERS:
+ getLayers().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYER_OPERATOR__LAYERS:
+ return layers != null && !layers.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eDerivedOperationID(int baseOperationID, Class<?> baseClass) {
+ if (baseClass == LayersContainer.class) {
+ switch (baseOperationID) {
+ case LayersPackage.LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION: return LayersPackage.LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+ default: return -1;
+ }
+ }
+ return super.eDerivedOperationID(baseOperationID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION:
+ addLayer((LayerExpression)arguments.get(0));
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * Get the LayersStack that own directly or indirectly this Layer.
+ * Throw an exception if no {@link LayersStack} can be found.
+ * <br>
+ * Lookup is done recursively in parent containers.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getLayersStack()
+ *
+ * @return
+ * @throws NotFoundException
+ */
+// @Override
+// public LayersStack getLayersStack() throws NotFoundException {
+// // TODO: performance improvment. It is possible to avoid the lookup
+// // by caching the LayersStack, or by setting a corresponding property
+// // in the model
+// return (LayersStack)ECoreUtils.lookupAncestorOfType(this, LayersPackage.eINSTANCE.getLayersStack());
+// }
+
+ /**
+ * Propagate the change to children
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#setIsBranchEnabled(boolean)
+ *
+ * @param newIsBranchEnabled
+ */
+ @Override
+ public void setIsBranchEnabled(boolean newIsBranchEnabled) {
+ // First, set the value.
+ super.setIsBranchEnabled(newIsBranchEnabled);
+ // Now, propagate
+ boolean value = isBranchEnabled();
+ for( LayerExpression layer : getLayers() ) {
+ layer.setIsBranchEnabled(value);
+ }
+ }
+
+ /**
+ * Set the value then propagate to children nodes.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#setOwningLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+ *
+ * @param newOwningLayersStack
+ */
+ @Override
+ public void setOwningLayersStack(LayersStack newOwningLayersStack) {
+ // Set the value
+ super.setOwningLayersStack(newOwningLayersStack);
+ // Now propagate to children
+ LayersStack value = getOwningLayersStack();
+ for( LayerExpression layer : getLayers() ) {
+ layer.setOwningLayersStack(value);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Start this element after its reloading by EMF
+ * This method is called recursively by the parent of this element.
+ *
+ * <!-- end-user-doc -->
+ * @throws LayersException
+ * @generated NOT
+ */
+ @Override
+ public void attach() throws LayersException {
+ // Try to attach this Layer
+ super.attach();
+ // attach children
+ for( LayerExpression l : getLayers()) {
+ l.attach();
+ }
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#detach()
+ *
+ * @throws LayersException
+ */
+ @Override
+ public void detach() throws LayersException {
+ // Detach this Layer
+ super.detach();
+ // detach children
+ for( LayerExpression l : getLayers()) {
+ l.detach();
+ }
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated unless we need it again
+ * @generated NOT
+ */
+ public void attachToLayersStack(LayersStack owningLayersStack) {
+
+ // the owning stack
+ setOwningLayersStack(owningLayersStack);
+
+ // Ensure child is started, if any
+ for( LayerExpression l : getLayers()) {
+ l.attachToLayersStack(owningLayersStack);
+ }
+
+ // Start local behaviors
+ startBehaviors();
+ }
+
+
+} //LayerOperatorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerStackDescriptorRegistryImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerStackDescriptorRegistryImpl.java
new file mode 100644
index 00000000000..3a479bb67e3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerStackDescriptorRegistryImpl.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Stack Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerStackDescriptorRegistryImpl extends MinimalEObjectImpl.Container implements LayerStackDescriptorRegistry {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayerStackDescriptorRegistryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYER_STACK_DESCRIPTOR_REGISTRY;
+ }
+
+} //LayerStackDescriptorRegistryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImpl.java
new file mode 100644
index 00000000000..5f00a39f1cd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImpl.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * This factory allows to create Layers dedicated to a Application and {@link LayersStack} <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersFactoryForStackImpl implements LayersFactoryForStack {
+
+ /**
+ * Index used to postfix the layer name.
+ */
+ protected int newIndex = 0;
+
+ public final String LAYER_NAME_PREFIX = "layer";
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static LayersFactoryForStack init() {
+ return new LayersFactoryForStackImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public LayersFactoryForStackImpl() {
+ super();
+ }
+
+ public String findNewLayerName( LayersContainer parent ) {
+
+ String proposedName = LAYER_NAME_PREFIX + newIndex++;
+
+ // Check if the name is available in the targetted container
+ if( parent instanceof LayerOperator ) {
+ LayerOperator parentOperator = (LayerOperator)parent;
+ while( getLayerByName(parentOperator, proposedName) != null ) {
+ proposedName = LAYER_NAME_PREFIX + newIndex++;
+ }
+ }
+ return proposedName;
+ }
+
+ /**
+ * Get a layer by its name.
+ * @param parentOperator The container containing layers
+ * @param name Name of the requested layer.
+ * @return The requested layer, or null.
+ */
+ private LayerExpression getLayerByName(LayerOperator parentOperator, String name) {
+
+
+ for( LayerExpression layer : parentOperator.getLayers() ) {
+ if( name.equals(layer.getName() ) ) {
+ return layer;
+ }
+ }
+ // Not found
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public LayersStack createLayersStack() {
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+
+ /**
+ *
+ * @param layer
+ * The layer to init
+ * @param parentLayer
+ * The parent Layer to which layer is added
+ * @param owningStack
+ * The {@link LayersStack} owning the tree of layers
+ * @param application
+ * The application required by layer.
+ *
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public LayerExpression initLayer(LayerExpression layer, LayersContainer parentLayer, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+ // Init the created layer
+ layer.setApplication(application);
+ layer.setName(findNewLayerName(parentLayer));
+ parentLayer.addLayer(layer);
+ layer.setOwningLayersStack(owningStack);
+ // Start the layer
+ layer.attach();
+
+ return layer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @throws LayersException
+ * @generated NOT
+ */
+ @Override
+ public Layer createLayer(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ // Init the created layer
+ initLayer(layer, parent, owningStack, application);
+
+ return layer;
+ }
+
+ @Override
+ public RegExpLayer createRegExpLayer(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+ RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+ // Init the created layer
+ initLayer(layer, parent, owningStack, application);
+
+ return layer;
+ }
+
+ @Override
+ public TopLayerOperator createTopLayerOperator(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ // Init the created layer
+ initLayer(layer, parent, owningStack, application);
+
+ return layer;
+ }
+
+ @Override
+ public StackedLayerOperator createStackedLayerOperator(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+ StackedLayerOperator layer = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ // Init the created layer
+ initLayer(layer, parent, owningStack, application);
+
+ return layer;
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack#createLayerOperator(java.lang.String, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)
+ *
+ * @param layerOperatorID
+ * @param parent
+ * @param owningStack
+ * @param application
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public AbstractLayerOperator createLayerOperator(String layerOperatorID, LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+ // Create a layer !
+ AbstractLayerOperator layerOperator = application.getLayerOperatorDescriptorRegistry().createLayerOperator(layerOperatorID);
+ // Init the created layer
+ initLayer(layerOperator, parent, owningStack, application);
+
+ return layerOperator;
+ }
+
+
+
+
+} //LayersFactoryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryImpl.java
new file mode 100644
index 00000000000..90b77415b5a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryImpl.java
@@ -0,0 +1,1035 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.*;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersFactoryImpl extends EFactoryImpl implements LayersFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static LayersFactory init() {
+ try {
+ LayersFactory theLayersFactory = (LayersFactory)EPackage.Registry.INSTANCE.getEFactory(LayersPackage.eNS_URI);
+ if (theLayersFactory != null) {
+ return theLayersFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new LayersFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case LayersPackage.LAYER_NAMED_STYLE: return createLayerNamedStyle();
+ case LayersPackage.LAYERS_STACK: return createLayersStack();
+ case LayersPackage.LAYERS_STACK_APPLICATION: return createLayersStackApplication();
+ case LayersPackage.LAYER_STACK_DESCRIPTOR_REGISTRY: return createLayerStackDescriptorRegistry();
+ case LayersPackage.PROPERTY_REGISTRY: return createPropertyRegistry();
+ case LayersPackage.PROPERTY: return createProperty();
+ case LayersPackage.METAMODEL: return createMetamodel();
+ case LayersPackage.TYPE_REGISTRY: return createTypeRegistry();
+ case LayersPackage.STRING_TO_TYPE_MAP: return (EObject)createStringToTypeMap();
+ case LayersPackage.LAYER_DESCRIPTOR_REGISTRY: return createLayerDescriptorRegistry();
+ case LayersPackage.LAYER_DESCRIPTOR: return createLayerDescriptor();
+ case LayersPackage.LAYER_APPLICATION_FACTORY: return createLayerApplicationFactory();
+ case LayersPackage.PROPERTY_SETTER_REGISTRY: return createPropertySetterRegistry();
+ case LayersPackage.STRING_TO_PROPERTY_SETTER: return (EObject)createStringToPropertySetter();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY: return createLayerOperatorDescriptorRegistry();
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR: return createLayerOperatorDescriptor();
+ case LayersPackage.PROPERTY_OPERATOR: return createPropertyOperator();
+ case LayersPackage.DEFAULT_PROPERTY_OPERATOR: return createDefaultPropertyOperator();
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP: return (EObject)createStringToTypeInstanceMap();
+ case LayersPackage.FOLDER: return createFolder();
+ case LayersPackage.INT_INSTANCE: return createIntInstance();
+ case LayersPackage.BOOLEAN_INSTANCE: return createBooleanInstance();
+ case LayersPackage.STRING_INSTANCE: return createStringInstance();
+ case LayersPackage.INT_TYPE: return createIntType();
+ case LayersPackage.BOOLEAN_TYPE: return createBooleanType();
+ case LayersPackage.STRING_TYPE: return createStringType();
+ case LayersPackage.CUSTOM_TYPE: return createCustomType();
+ case LayersPackage.TOP_LAYER_OPERATOR: return createTopLayerOperator();
+ case LayersPackage.STACKED_LAYER_OPERATOR: return createStackedLayerOperator();
+ case LayersPackage.CUSTOM_LAYER_OPERATOR: return createCustomLayerOperator();
+ case LayersPackage.PROPERTY_INDEX: return createPropertyIndex();
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP: return (EObject)createStringToPropertyIndexMap();
+ case LayersPackage.SIMPLE_LAYER_DESCRIPTOR: return createSimpleLayerDescriptor();
+ case LayersPackage.REG_EXP_LAYER_DESCRIPTOR: return createRegExpLayerDescriptor();
+ case LayersPackage.NULL_INSTANCE: return createNullInstance();
+ case LayersPackage.REG_EXP_LAYER: return createRegExpLayer();
+ case LayersPackage.LAYER: return createLayer();
+ case LayersPackage.COLOR: return createColor();
+ case LayersPackage.COLOR_INSTANCE: return createColorInstance();
+ case LayersPackage.FILL_INSTANCE: return createFillInstance();
+ case LayersPackage.FILL: return createFill();
+ case LayersPackage.FILL_PROPERTY_SETTER: return createFillPropertySetter();
+ case LayersPackage.IS_VALID_PROPERTY_SETTER: return createIsValidPropertySetter();
+ case LayersPackage.NULL_PROPERTY_SETTER: return createNullPropertySetter();
+ case LayersPackage.LINE_TYPE: return createLineType();
+ case LayersPackage.LINE_INSTANCE: return createLineInstance();
+ case LayersPackage.LINE_PROPERTY_SETTER: return createLinePropertySetter();
+ case LayersPackage.FONT_PROPERTY_SETTER: return createFontPropertySetter();
+ case LayersPackage.FONT_INSTANCE: return createFontInstance();
+ case LayersPackage.FONT_TYPE: return createFontType();
+ case LayersPackage.IS_VISIBLE_PROPERTY_SETTER: return createIsVisiblePropertySetter();
+ case LayersPackage.TOP_LAYER_OPERATOR_DESCRIPTOR: return createTopLayerOperatorDescriptor();
+ case LayersPackage.STACKED_LAYER_OPERATOR_DESCRIPTOR: return createStackedLayerOperatorDescriptor();
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR: return createCustomPropertyOperator();
+ case LayersPackage.AND_STACKED_LAYER_OPERATOR_DESCRIPTOR: return createAndStackedLayerOperatorDescriptor();
+ case LayersPackage.OR_STACKED_LAYER_OPERATOR_DESCRIPTOR: return createOrStackedLayerOperatorDescriptor();
+ case LayersPackage.IS_ABSTRACT_UML_SETTER: return createIsAbstractUmlSetter();
+ case LayersPackage.ALL_VIEWS_DERIVED_LAYER: return createAllViewsDerivedLayer();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case LayersPackage.LAYER_STATE:
+ return createLayerStateFromString(eDataType, initialValue);
+ case LayersPackage.EVENT_LEVEL:
+ return createEventLevelFromString(eDataType, initialValue);
+ case LayersPackage.STRING:
+ return createStringFromString(eDataType, initialValue);
+ case LayersPackage.BOOLEAN:
+ return createbooleanFromString(eDataType, initialValue);
+ case LayersPackage.EPACKAGE:
+ return createEPackageFromString(eDataType, initialValue);
+ case LayersPackage.LAYERS_EXCEPTION:
+ return createLayersExceptionFromString(eDataType, initialValue);
+ case LayersPackage.INT:
+ return createintFromString(eDataType, initialValue);
+ case LayersPackage.BAD_STATE_EXCEPTION:
+ return createBadStateExceptionFromString(eDataType, initialValue);
+ case LayersPackage.NOT_FOUND_EXCEPTION:
+ return createNotFoundExceptionFromString(eDataType, initialValue);
+ case LayersPackage.COMPUTE_PROPERTY_VALUE_COMMAND:
+ return createComputePropertyValueCommandFromString(eDataType, initialValue);
+ case LayersPackage.OBJECT:
+ return createObjectFromString(eDataType, initialValue);
+ case LayersPackage.CUSTOM_PROPERTY_OPERTOR_INSTANCE:
+ return createCustomPropertyOpertorInstanceFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case LayersPackage.LAYER_STATE:
+ return convertLayerStateToString(eDataType, instanceValue);
+ case LayersPackage.EVENT_LEVEL:
+ return convertEventLevelToString(eDataType, instanceValue);
+ case LayersPackage.STRING:
+ return convertStringToString(eDataType, instanceValue);
+ case LayersPackage.BOOLEAN:
+ return convertbooleanToString(eDataType, instanceValue);
+ case LayersPackage.EPACKAGE:
+ return convertEPackageToString(eDataType, instanceValue);
+ case LayersPackage.LAYERS_EXCEPTION:
+ return convertLayersExceptionToString(eDataType, instanceValue);
+ case LayersPackage.INT:
+ return convertintToString(eDataType, instanceValue);
+ case LayersPackage.BAD_STATE_EXCEPTION:
+ return convertBadStateExceptionToString(eDataType, instanceValue);
+ case LayersPackage.NOT_FOUND_EXCEPTION:
+ return convertNotFoundExceptionToString(eDataType, instanceValue);
+ case LayersPackage.COMPUTE_PROPERTY_VALUE_COMMAND:
+ return convertComputePropertyValueCommandToString(eDataType, instanceValue);
+ case LayersPackage.OBJECT:
+ return convertObjectToString(eDataType, instanceValue);
+ case LayersPackage.CUSTOM_PROPERTY_OPERTOR_INSTANCE:
+ return convertCustomPropertyOpertorInstanceToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerNamedStyle createLayerNamedStyle() {
+ LayerNamedStyleImpl layerNamedStyle = new LayerNamedStyleImpl();
+ return layerNamedStyle;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStack createLayersStack() {
+ LayersStackImpl layersStack = new LayersStackImpl();
+ return layersStack;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStackApplication createLayersStackApplication() {
+ LayersStackApplicationImpl layersStackApplication = new LayersStackApplicationImpl();
+ return layersStackApplication;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerStackDescriptorRegistry createLayerStackDescriptorRegistry() {
+ LayerStackDescriptorRegistryImpl layerStackDescriptorRegistry = new LayerStackDescriptorRegistryImpl();
+ return layerStackDescriptorRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyRegistry createPropertyRegistry() {
+ PropertyRegistryImpl propertyRegistry = new PropertyRegistryImpl();
+ return propertyRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property createProperty() {
+ PropertyImpl property = new PropertyImpl();
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Metamodel createMetamodel() {
+ MetamodelImpl metamodel = new MetamodelImpl();
+ return metamodel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeRegistry createTypeRegistry() {
+ TypeRegistryImpl typeRegistry = new TypeRegistryImpl();
+ return typeRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Map.Entry<String, Type> createStringToTypeMap() {
+ StringToTypeMapImpl stringToTypeMap = new StringToTypeMapImpl();
+ return stringToTypeMap;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerDescriptorRegistry createLayerDescriptorRegistry() {
+ LayerDescriptorRegistryImpl layerDescriptorRegistry = new LayerDescriptorRegistryImpl();
+ return layerDescriptorRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerDescriptor createLayerDescriptor() {
+ LayerDescriptorImpl layerDescriptor = new LayerDescriptorImpl();
+ return layerDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerApplicationFactory createLayerApplicationFactory() {
+ LayerApplicationFactoryImpl layerApplicationFactory = new LayerApplicationFactoryImpl();
+ return layerApplicationFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertySetterRegistry createPropertySetterRegistry() {
+ PropertySetterRegistryImpl propertySetterRegistry = new PropertySetterRegistryImpl();
+ return propertySetterRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Map.Entry<String, PropertySetter> createStringToPropertySetter() {
+ StringToPropertySetterImpl stringToPropertySetter = new StringToPropertySetterImpl();
+ return stringToPropertySetter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Map.Entry<String, TypeInstance> createStringToTypeInstanceMap() {
+ StringToTypeInstanceMapImpl stringToTypeInstanceMap = new StringToTypeInstanceMapImpl();
+ return stringToTypeInstanceMap;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Folder createFolder() {
+ FolderImpl folder = new FolderImpl();
+ return folder;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntInstance createIntInstance() {
+ IntInstanceImpl intInstance = new IntInstanceImpl();
+ return intInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanInstance createBooleanInstance() {
+ BooleanInstanceImpl booleanInstance = new BooleanInstanceImpl();
+ return booleanInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringInstance createStringInstance() {
+ StringInstanceImpl stringInstance = new StringInstanceImpl();
+ return stringInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntType createIntType() {
+ IntTypeImpl intType = new IntTypeImpl();
+ return intType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanType createBooleanType() {
+ BooleanTypeImpl booleanType = new BooleanTypeImpl();
+ return booleanType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringType createStringType() {
+ StringTypeImpl stringType = new StringTypeImpl();
+ return stringType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomType createCustomType() {
+ CustomTypeImpl customType = new CustomTypeImpl();
+ return customType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptor createLayerOperatorDescriptor() {
+ LayerOperatorDescriptorImpl layerOperatorDescriptor = new LayerOperatorDescriptorImpl();
+ return layerOperatorDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyOperator createPropertyOperator() {
+ PropertyOperatorImpl propertyOperator = new PropertyOperatorImpl();
+ return propertyOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultPropertyOperator createDefaultPropertyOperator() {
+ DefaultPropertyOperatorImpl defaultPropertyOperator = new DefaultPropertyOperatorImpl();
+ return defaultPropertyOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TopLayerOperator createTopLayerOperator() {
+ TopLayerOperatorImpl topLayerOperator = new TopLayerOperatorImpl();
+ return topLayerOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StackedLayerOperator createStackedLayerOperator() {
+ StackedLayerOperatorImpl stackedLayerOperator = new StackedLayerOperatorImpl();
+ return stackedLayerOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomLayerOperator createCustomLayerOperator() {
+ CustomLayerOperatorImpl customLayerOperator = new CustomLayerOperatorImpl();
+ return customLayerOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyIndex createPropertyIndex() {
+ PropertyIndexImpl propertyIndex = new PropertyIndexImpl();
+ return propertyIndex;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Map.Entry<String, PropertyIndex> createStringToPropertyIndexMap() {
+ StringToPropertyIndexMapImpl stringToPropertyIndexMap = new StringToPropertyIndexMapImpl();
+ return stringToPropertyIndexMap;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleLayerDescriptor createSimpleLayerDescriptor() {
+ SimpleLayerDescriptorImpl simpleLayerDescriptor = new SimpleLayerDescriptorImpl();
+ return simpleLayerDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RegExpLayerDescriptor createRegExpLayerDescriptor() {
+ RegExpLayerDescriptorImpl regExpLayerDescriptor = new RegExpLayerDescriptorImpl();
+ return regExpLayerDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullInstance createNullInstance() {
+ NullInstanceImpl nullInstance = new NullInstanceImpl();
+ return nullInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RegExpLayer createRegExpLayer() {
+ RegExpLayerImpl regExpLayer = new RegExpLayerImpl();
+ return regExpLayer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Layer createLayer() {
+ LayerImpl layer = new LayerImpl();
+ return layer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Color createColor() {
+ ColorImpl color = new ColorImpl();
+ return color;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ColorInstance createColorInstance() {
+ ColorInstanceImpl colorInstance = new ColorInstanceImpl();
+ return colorInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FillInstance createFillInstance() {
+ FillInstanceImpl fillInstance = new FillInstanceImpl();
+ return fillInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Fill createFill() {
+ FillImpl fill = new FillImpl();
+ return fill;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FillPropertySetter createFillPropertySetter() {
+ FillPropertySetterImpl fillPropertySetter = new FillPropertySetterImpl();
+ return fillPropertySetter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IsValidPropertySetter createIsValidPropertySetter() {
+ IsValidPropertySetterImpl isValidPropertySetter = new IsValidPropertySetterImpl();
+ return isValidPropertySetter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullPropertySetter createNullPropertySetter() {
+ NullPropertySetterImpl nullPropertySetter = new NullPropertySetterImpl();
+ return nullPropertySetter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LineType createLineType() {
+ LineTypeImpl lineType = new LineTypeImpl();
+ return lineType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LineInstance createLineInstance() {
+ LineInstanceImpl lineInstance = new LineInstanceImpl();
+ return lineInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LinePropertySetter createLinePropertySetter() {
+ LinePropertySetterImpl linePropertySetter = new LinePropertySetterImpl();
+ return linePropertySetter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FontPropertySetter createFontPropertySetter() {
+ FontPropertySetterImpl fontPropertySetter = new FontPropertySetterImpl();
+ return fontPropertySetter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FontInstance createFontInstance() {
+ FontInstanceImpl fontInstance = new FontInstanceImpl();
+ return fontInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FontType createFontType() {
+ FontTypeImpl fontType = new FontTypeImpl();
+ return fontType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IsVisiblePropertySetter createIsVisiblePropertySetter() {
+ IsVisiblePropertySetterImpl isVisiblePropertySetter = new IsVisiblePropertySetterImpl();
+ return isVisiblePropertySetter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptorRegistry createLayerOperatorDescriptorRegistry() {
+ LayerOperatorDescriptorRegistryImpl layerOperatorDescriptorRegistry = new LayerOperatorDescriptorRegistryImpl();
+ return layerOperatorDescriptorRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TopLayerOperatorDescriptor createTopLayerOperatorDescriptor() {
+ TopLayerOperatorDescriptorImpl topLayerOperatorDescriptor = new TopLayerOperatorDescriptorImpl();
+ return topLayerOperatorDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StackedLayerOperatorDescriptor createStackedLayerOperatorDescriptor() {
+ StackedLayerOperatorDescriptorImpl stackedLayerOperatorDescriptor = new StackedLayerOperatorDescriptorImpl();
+ return stackedLayerOperatorDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomPropertyOperator createCustomPropertyOperator() {
+ CustomPropertyOperatorImpl customPropertyOperator = new CustomPropertyOperatorImpl();
+ return customPropertyOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AndStackedLayerOperatorDescriptor createAndStackedLayerOperatorDescriptor() {
+ AndStackedLayerOperatorDescriptorImpl andStackedLayerOperatorDescriptor = new AndStackedLayerOperatorDescriptorImpl();
+ return andStackedLayerOperatorDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrStackedLayerOperatorDescriptor createOrStackedLayerOperatorDescriptor() {
+ OrStackedLayerOperatorDescriptorImpl orStackedLayerOperatorDescriptor = new OrStackedLayerOperatorDescriptorImpl();
+ return orStackedLayerOperatorDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IsAbstractUmlSetter createIsAbstractUmlSetter() {
+ IsAbstractUmlSetterImpl isAbstractUmlSetter = new IsAbstractUmlSetterImpl();
+ return isAbstractUmlSetter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AllViewsDerivedLayer createAllViewsDerivedLayer() {
+ AllViewsDerivedLayerImpl allViewsDerivedLayer = new AllViewsDerivedLayerImpl();
+ return allViewsDerivedLayer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerState createLayerStateFromString(EDataType eDataType, String initialValue) {
+ LayerState result = LayerState.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertLayerStateToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EventLevel createEventLevelFromString(EDataType eDataType, String initialValue) {
+ EventLevel result = EventLevel.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertEventLevelToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String createStringFromString(EDataType eDataType, String initialValue) {
+ return (String)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertStringToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Boolean createbooleanFromString(EDataType eDataType, String initialValue) {
+ return (Boolean)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertbooleanToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EPackage createEPackageFromString(EDataType eDataType, String initialValue) {
+ return (EPackage)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertEPackageToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BadStateException createBadStateExceptionFromString(EDataType eDataType, String initialValue) {
+ return (BadStateException)createLayersExceptionFromString(LayersPackage.Literals.LAYERS_EXCEPTION, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertBadStateExceptionToString(EDataType eDataType, Object instanceValue) {
+ return convertLayersExceptionToString(LayersPackage.Literals.LAYERS_EXCEPTION, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersException createLayersExceptionFromString(EDataType eDataType, String initialValue) {
+ return (LayersException)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertLayersExceptionToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotFoundException createNotFoundExceptionFromString(EDataType eDataType, String initialValue) {
+ return (NotFoundException)createLayersExceptionFromString(LayersPackage.Literals.LAYERS_EXCEPTION, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertNotFoundExceptionToString(EDataType eDataType, Object instanceValue) {
+ return convertLayersExceptionToString(LayersPackage.Literals.LAYERS_EXCEPTION, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComputePropertyValueCommand createComputePropertyValueCommandFromString(EDataType eDataType, String initialValue) {
+ return (ComputePropertyValueCommand)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertComputePropertyValueCommandToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Integer createintFromString(EDataType eDataType, String initialValue) {
+ return (Integer)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertintToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object createObjectFromString(EDataType eDataType, String initialValue) {
+ return super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertObjectToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomPropertyOperatorsInstance createCustomPropertyOpertorInstanceFromString(EDataType eDataType, String initialValue) {
+ return (CustomPropertyOperatorsInstance)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertCustomPropertyOpertorInstanceToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersPackage getLayersPackage() {
+ return (LayersPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static LayersPackage getPackage() {
+ return LayersPackage.eINSTANCE;
+ }
+
+} //LayersFactoryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersPackageImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersPackageImpl.java
new file mode 100644
index 00000000000..d17d5f4b7a3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersPackageImpl.java
@@ -0,0 +1,3833 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.Map;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.EventLevel;
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LayersPackageImpl extends EPackageImpl implements LayersPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerNamedStyleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layersStackEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass applicationDependantElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layersStackApplicationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass folderElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerStackDescriptorRegistryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertyRegistryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass metamodelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass computePropertyValueCommandItfEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeRegistryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringToTypeMapEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerDescriptorRegistryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerDescriptorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerApplicationFactoryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertySetterRegistryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertySetterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringToPropertySetterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractLayerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringToTypeInstanceMapEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass folderEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass intInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass intTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass customTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layersContainerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractLayerOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerOperatorDescriptorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertyOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass defaultPropertyOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass topLayerOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stackedLayerOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass customLayerOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertyIndexEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringToPropertyIndexMapEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass simpleLayerDescriptorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass regExpLayerDescriptorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nullInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass regExpLayerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass colorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass colorInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass fillInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass fillEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass fillPropertySetterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass isValidPropertySetterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nullPropertySetterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass lineTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass lineInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass linePropertySetterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass fontPropertySetterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass fontInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass fontTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass isVisiblePropertySetterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass layerOperatorDescriptorRegistryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass topLayerOperatorDescriptorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stackedLayerOperatorDescriptorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass customPropertyOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass andStackedLayerOperatorDescriptorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass orStackedLayerOperatorDescriptorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass isAbstractUmlSetterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass allViewsDerivedLayerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum layerStateEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum eventLevelEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType stringEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType booleanEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType ePackageEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType badStateExceptionEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType layersExceptionEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType notFoundExceptionEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType computePropertyValueCommandEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType intEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType objectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType customPropertyOpertorInstanceEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private LayersPackageImpl() {
+ super(eNS_URI, LayersFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link LayersPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static LayersPackage init() {
+ if (isInited) return (LayersPackage)EPackage.Registry.INSTANCE.getEPackage(LayersPackage.eNS_URI);
+
+ // Obtain or create and register package
+ LayersPackageImpl theLayersPackage = (LayersPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof LayersPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new LayersPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ NotationPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theLayersPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theLayersPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theLayersPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(LayersPackage.eNS_URI, theLayersPackage);
+ return theLayersPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerNamedStyle() {
+ return layerNamedStyleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerNamedStyle_LayersStack() {
+ return (EReference)layerNamedStyleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayersStack() {
+ return layersStackEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayersStack_Layers() {
+ return (EReference)layersStackEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayersStack_Name() {
+ return (EAttribute)layersStackEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayersStack_Description() {
+ return (EAttribute)layersStackEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayersStack_Diagram() {
+ return (EReference)layersStackEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayersStack_State() {
+ return (EAttribute)layersStackEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStack__GetComputePropertyValueCommand__View_Property() {
+ return layersStackEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStack__GetPropertiesComputePropertyValueCommand__View_EList() {
+ return layersStackEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStack__GetViewsComputePropertyValueCommand__EList_Property() {
+ return layersStackEClass.getEOperations().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStack__StartAfterCreation() {
+ return layersStackEClass.getEOperations().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStack__AttachLayers() {
+ return layersStackEClass.getEOperations().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStack__Attach() {
+ return layersStackEClass.getEOperations().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStack__Detach() {
+ return layersStackEClass.getEOperations().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStack__EnterAttachedState() {
+ return layersStackEClass.getEOperations().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStack__ExitAttachedState() {
+ return layersStackEClass.getEOperations().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerExpression() {
+ return layerExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayerExpression_Name() {
+ return (EAttribute)layerExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayerExpression_Description() {
+ return (EAttribute)layerExpressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayerExpression_IsLayerEnabledInternal() {
+ return (EAttribute)layerExpressionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayerExpression_IsLayerEnabled() {
+ return (EAttribute)layerExpressionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayerExpression_IsBranchEnabled() {
+ return (EAttribute)layerExpressionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerExpression_OwningLayersStack() {
+ return (EReference)layerExpressionEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayerExpression_State() {
+ return (EAttribute)layerExpressionEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerExpression__GetComputePropertyValueCommand__View_Property() {
+ return layerExpressionEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerExpression__GetViewsComputePropertyValueCommand__EList_Property() {
+ return layerExpressionEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerExpression__GetPropertiesComputePropertyValueCommand__View_EList() {
+ return layerExpressionEClass.getEOperations().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerExpression__AttachToLayersStack__LayersStack() {
+ return layerExpressionEClass.getEOperations().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerExpression__GetLayersStack() {
+ return layerExpressionEClass.getEOperations().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerExpression__EnterAttachedState() {
+ return layerExpressionEClass.getEOperations().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerExpression__Attach() {
+ return layerExpressionEClass.getEOperations().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerExpression__Detach() {
+ return layerExpressionEClass.getEOperations().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerExpression__ExitAttachedState() {
+ return layerExpressionEClass.getEOperations().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getApplicationDependantElement() {
+ return applicationDependantElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getApplicationDependantElement_Application() {
+ return (EReference)applicationDependantElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayersStackApplication() {
+ return layersStackApplicationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayersStackApplication_LayersStacks() {
+ return (EReference)layersStackApplicationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayersStackApplication_LayerStackRegistry() {
+ return (EReference)layersStackApplicationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayersStackApplication_PropertyRegistry() {
+ return (EReference)layersStackApplicationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayersStackApplication_LayerDescriptorRegistry() {
+ return (EReference)layersStackApplicationEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayersStackApplication_Factory() {
+ return (EReference)layersStackApplicationEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayersStackApplication_PropertySetterRegistry() {
+ return (EReference)layersStackApplicationEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayersStackApplication_LayerOperatorDescriptorRegistry() {
+ return (EReference)layersStackApplicationEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStackApplication__GetLayersStackFor__Diagram() {
+ return layersStackApplicationEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStackApplication__RemoveLayersStackFor__Diagram() {
+ return layersStackApplicationEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStackApplication__IsLayersStackAttachedFor__Diagram() {
+ return layersStackApplicationEClass.getEOperations().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStackApplication__CreateLayersStackFor__Diagram() {
+ return layersStackApplicationEClass.getEOperations().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersStackApplication__LookupLayersStackFor__Diagram() {
+ return layersStackApplicationEClass.getEOperations().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFolderElement() {
+ return folderElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerStackDescriptorRegistry() {
+ return layerStackDescriptorRegistryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPropertyRegistry() {
+ return propertyRegistryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPropertyRegistry_Properties() {
+ return (EReference)propertyRegistryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPropertyRegistry_TypeRegistry() {
+ return (EReference)propertyRegistryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPropertyRegistry_PropertiesCount() {
+ return (EAttribute)propertyRegistryEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getPropertyRegistry__GetPropertyIndex__String() {
+ return propertyRegistryEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getPropertyRegistry__GetProperty__String() {
+ return propertyRegistryEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getPropertyRegistry__AddProperty__Property() {
+ return propertyRegistryEClass.getEOperations().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getProperty() {
+ return propertyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProperty_Type() {
+ return (EReference)propertyEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProperty_DefaultValue() {
+ return (EReference)propertyEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getProperty_Name() {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getProperty_Description() {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getProperty_Index() {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getProperty__CreateInstance() {
+ return propertyEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getType() {
+ return typeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getType_Metamodel() {
+ return (EReference)typeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getType_Name() {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getType_Description() {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getType__CreateInstance() {
+ return typeEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMetamodel() {
+ return metamodelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getMetamodel_Name() {
+ return (EAttribute)metamodelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getMetamodel_Description() {
+ return (EAttribute)metamodelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getMetamodel_Nsuri() {
+ return (EAttribute)metamodelEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getMetamodel_PluginID() {
+ return (EAttribute)metamodelEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getMetamodel_EPackageInstanceName() {
+ return (EAttribute)metamodelEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getMetamodel_IsTypeValid() {
+ return (EAttribute)metamodelEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getMetamodel__GetEPackage() {
+ return metamodelEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTypeInstance() {
+ return typeInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getTypeInstance__SetValueFromString__String() {
+ return typeInstanceEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getTypeInstance__SetValueFromInstance__TypeInstance() {
+ return typeInstanceEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getComputePropertyValueCommandItf() {
+ return computePropertyValueCommandItfEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getComputePropertyValueCommandItf__GetCmdValue() {
+ return computePropertyValueCommandItfEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTypeRegistry() {
+ return typeRegistryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTypeRegistry_Types() {
+ return (EReference)typeRegistryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringToTypeMap() {
+ return stringToTypeMapEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStringToTypeMap_Value() {
+ return (EReference)stringToTypeMapEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getStringToTypeMap_Key() {
+ return (EAttribute)stringToTypeMapEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerDescriptorRegistry() {
+ return layerDescriptorRegistryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerDescriptorRegistry_LayerDescriptors() {
+ return (EReference)layerDescriptorRegistryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerDescriptor() {
+ return layerDescriptorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerDescriptor_PropertyRegistry() {
+ return (EReference)layerDescriptorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerApplicationFactory() {
+ return layerApplicationFactoryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerApplicationFactory_Application() {
+ return (EReference)layerApplicationFactoryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPropertySetterRegistry() {
+ return propertySetterRegistryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPropertySetterRegistry_PropertySetters() {
+ return (EReference)propertySetterRegistryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPropertySetterRegistry_SetterMap() {
+ return (EReference)propertySetterRegistryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPropertySetterRegistry_Application() {
+ return (EReference)propertySetterRegistryEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getPropertySetterRegistry__GetPropertySetter__Property() {
+ return propertySetterRegistryEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getPropertySetterRegistry__GetPropertySetter__String() {
+ return propertySetterRegistryEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getPropertySetterRegistry__AddPropertySetter__PropertySetter() {
+ return propertySetterRegistryEClass.getEOperations().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPropertySetter() {
+ return propertySetterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPropertySetter_Property() {
+ return (EReference)propertySetterEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPropertySetter_PropertyName() {
+ return (EAttribute)propertySetterEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getPropertySetter__SetValue__View_TypeInstance() {
+ return propertySetterEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringToPropertySetter() {
+ return stringToPropertySetterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getStringToPropertySetter_Key() {
+ return (EAttribute)stringToPropertySetterEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStringToPropertySetter_Value() {
+ return (EReference)stringToPropertySetterEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractLayer() {
+ return abstractLayerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractLayer_PropertyValues() {
+ return (EReference)abstractLayerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractLayer_PropertyValueMap() {
+ return (EReference)abstractLayerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractLayer_LayerDescriptor() {
+ return (EReference)abstractLayerEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractLayer_Views() {
+ return (EReference)abstractLayerEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractLayer_AttachedProperties() {
+ return (EReference)abstractLayerEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getAbstractLayer__AddPropertyInstance__Property() {
+ return abstractLayerEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getAbstractLayer__RemovePropertyInstance__Property() {
+ return abstractLayerEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getAbstractLayer__GetPropertyInstance__Property() {
+ return abstractLayerEClass.getEOperations().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getAbstractLayer__GetPropertyInstance__String() {
+ return abstractLayerEClass.getEOperations().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringToTypeInstanceMap() {
+ return stringToTypeInstanceMapEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getStringToTypeInstanceMap_Key() {
+ return (EAttribute)stringToTypeInstanceMapEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStringToTypeInstanceMap_Value() {
+ return (EReference)stringToTypeInstanceMapEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFolder() {
+ return folderEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFolder_Elements() {
+ return (EReference)folderEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFolder_Name() {
+ return (EAttribute)folderEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntInstance() {
+ return intInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntInstance_Value() {
+ return (EAttribute)intInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanInstance() {
+ return booleanInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getBooleanInstance_Value() {
+ return (EAttribute)booleanInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringInstance() {
+ return stringInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getStringInstance_Value() {
+ return (EAttribute)stringInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntType() {
+ return intTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanType() {
+ return booleanTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringType() {
+ return stringTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCustomType() {
+ return customTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCustomType_Classifier() {
+ return (EAttribute)customTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerOperator() {
+ return layerOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerOperator_Layers() {
+ return (EReference)layerOperatorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayersContainer() {
+ return layersContainerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayersContainer__AddLayer__LayerExpression() {
+ return layersContainerEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractLayerOperator() {
+ return abstractLayerOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractLayerOperator_LayerOperatorDescriptor() {
+ return (EReference)abstractLayerOperatorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAbstractLayerOperator_LayerOperatorDescriptorName() {
+ return (EAttribute)abstractLayerOperatorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getAbstractLayerOperator__IsDescriptorSet() {
+ return abstractLayerOperatorEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getAbstractLayerOperator__ResetDescriptor() {
+ return abstractLayerOperatorEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerOperatorDescriptor() {
+ return layerOperatorDescriptorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerOperatorDescriptor_PropertyOperators() {
+ return (EReference)layerOperatorDescriptorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayerOperatorDescriptor_Name() {
+ return (EAttribute)layerOperatorDescriptorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptor__GetPropertyOperator__Property() {
+ return layerOperatorDescriptorEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptor__SetPropertyOperator__Property_PropertyOperator() {
+ return layerOperatorDescriptorEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptor__CreateLayerOperator() {
+ return layerOperatorDescriptorEClass.getEOperations().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptor__SetPropertyCollectionSize__int_DefaultPropertyOperator() {
+ return layerOperatorDescriptorEClass.getEOperations().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPropertyOperator() {
+ return propertyOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPropertyOperator_Name() {
+ return (EAttribute)propertyOperatorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getPropertyOperator__GetComputePropertyValueCommand__EList() {
+ return propertyOperatorEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDefaultPropertyOperator() {
+ return defaultPropertyOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTopLayerOperator() {
+ return topLayerOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStackedLayerOperator() {
+ return stackedLayerOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCustomLayerOperator() {
+ return customLayerOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPropertyIndex() {
+ return propertyIndexEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPropertyIndex_Property() {
+ return (EReference)propertyIndexEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPropertyIndex_Index() {
+ return (EAttribute)propertyIndexEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringToPropertyIndexMap() {
+ return stringToPropertyIndexMapEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStringToPropertyIndexMap_Value() {
+ return (EReference)stringToPropertyIndexMapEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getStringToPropertyIndexMap_Key() {
+ return (EAttribute)stringToPropertyIndexMapEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSimpleLayerDescriptor() {
+ return simpleLayerDescriptorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRegExpLayerDescriptor() {
+ return regExpLayerDescriptorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNullInstance() {
+ return nullInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getNullInstance__GetInstance() {
+ return nullInstanceEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRegExpLayer() {
+ return regExpLayerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRegExpLayer_Expr() {
+ return (EAttribute)regExpLayerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRegExpLayer_Language() {
+ return (EAttribute)regExpLayerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRegExpLayer_IsDomainChangedEventDependant() {
+ return (EAttribute)regExpLayerEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRegExpLayer_DomainChangedEventLevel() {
+ return (EAttribute)regExpLayerEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRegExpLayer_IsDiagramChangedEventDependant() {
+ return (EAttribute)regExpLayerEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRegExpLayer_DiagramChangedEventLevel() {
+ return (EAttribute)regExpLayerEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getRegExpLayer_ExpressionContextObjectType() {
+ return (EAttribute)regExpLayerEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getRegExpLayer__Activate__AbstractLayerOperator() {
+ return regExpLayerEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getRegExpLayer__Deactivate__AbstractLayerOperator() {
+ return regExpLayerEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getRegExpLayer__IsDerivedView__View() {
+ return regExpLayerEClass.getEOperations().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getRegExpLayer__AttachDerivedView__View() {
+ return regExpLayerEClass.getEOperations().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getRegExpLayer__AttachDerivedViews__EList() {
+ return regExpLayerEClass.getEOperations().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getRegExpLayer__AttachDerivedViews() {
+ return regExpLayerEClass.getEOperations().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getRegExpLayer__LookupDerivedViews__EList() {
+ return regExpLayerEClass.getEOperations().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayer() {
+ return layerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getColor() {
+ return colorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getColorInstance() {
+ return colorInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getColorInstance_Value() {
+ return (EAttribute)colorInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFillInstance() {
+ return fillInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFillInstance_Transparency() {
+ return (EAttribute)fillInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFillInstance_FillColor() {
+ return (EReference)fillInstanceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFill() {
+ return fillEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFillPropertySetter() {
+ return fillPropertySetterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIsValidPropertySetter() {
+ return isValidPropertySetterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNullPropertySetter() {
+ return nullPropertySetterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLineType() {
+ return lineTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLineInstance() {
+ return lineInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLineInstance_LineColor() {
+ return (EAttribute)lineInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLineInstance_LineWith() {
+ return (EAttribute)lineInstanceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLinePropertySetter() {
+ return linePropertySetterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFontPropertySetter() {
+ return fontPropertySetterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFontInstance() {
+ return fontInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFontInstance_FontColor() {
+ return (EAttribute)fontInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFontInstance_FontName() {
+ return (EAttribute)fontInstanceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFontInstance_FontHeigh() {
+ return (EAttribute)fontInstanceEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFontInstance_Bold() {
+ return (EAttribute)fontInstanceEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFontType() {
+ return fontTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIsVisiblePropertySetter() {
+ return isVisiblePropertySetterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLayerOperatorDescriptorRegistry() {
+ return layerOperatorDescriptorRegistryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerOperatorDescriptorRegistry_Descriptors() {
+ return (EReference)layerOperatorDescriptorRegistryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerOperatorDescriptorRegistry_PropertyOperators() {
+ return (EReference)layerOperatorDescriptorRegistryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLayerOperatorDescriptorRegistry_PropertyCollectionSize() {
+ return (EAttribute)layerOperatorDescriptorRegistryEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLayerOperatorDescriptorRegistry_DefaultOperator() {
+ return (EReference)layerOperatorDescriptorRegistryEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptorRegistry__AddLayerOperatorDescriptor__LayerOperatorDescriptor() {
+ return layerOperatorDescriptorRegistryEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptorRegistry__GetLayerOperatorDescriptor__String() {
+ return layerOperatorDescriptorRegistryEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptorRegistry__AddPropertyOperator__PropertyOperator() {
+ return layerOperatorDescriptorRegistryEClass.getEOperations().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptorRegistry__GetPropertyOperator__String() {
+ return layerOperatorDescriptorRegistryEClass.getEOperations().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptorRegistry__AttachOperatorToDescriptor__Property_String_String() {
+ return layerOperatorDescriptorRegistryEClass.getEOperations().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getLayerOperatorDescriptorRegistry__CreateLayerOperator__String() {
+ return layerOperatorDescriptorRegistryEClass.getEOperations().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTopLayerOperatorDescriptor() {
+ return topLayerOperatorDescriptorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStackedLayerOperatorDescriptor() {
+ return stackedLayerOperatorDescriptorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCustomPropertyOperator() {
+ return customPropertyOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCustomPropertyOperator_Classname() {
+ return (EAttribute)customPropertyOperatorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCustomPropertyOperator_OperatorInstance() {
+ return (EAttribute)customPropertyOperatorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCustomPropertyOperator_ClassBundleID() {
+ return (EAttribute)customPropertyOperatorEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EOperation getCustomPropertyOperator__ResetOperatorInstance() {
+ return customPropertyOperatorEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAndStackedLayerOperatorDescriptor() {
+ return andStackedLayerOperatorDescriptorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOrStackedLayerOperatorDescriptor() {
+ return orStackedLayerOperatorDescriptorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIsAbstractUmlSetter() {
+ return isAbstractUmlSetterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAllViewsDerivedLayer() {
+ return allViewsDerivedLayerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getLayerState() {
+ return layerStateEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getEventLevel() {
+ return eventLevelEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getString() {
+ return stringEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getboolean() {
+ return booleanEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getEPackage() {
+ return ePackageEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getBadStateException() {
+ return badStateExceptionEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getLayersException() {
+ return layersExceptionEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getNotFoundException() {
+ return notFoundExceptionEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getComputePropertyValueCommand() {
+ return computePropertyValueCommandEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getint() {
+ return intEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getObject() {
+ return objectEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getCustomPropertyOpertorInstance() {
+ return customPropertyOpertorInstanceEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersFactory getLayersFactory() {
+ return (LayersFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ layerNamedStyleEClass = createEClass(LAYER_NAMED_STYLE);
+ createEReference(layerNamedStyleEClass, LAYER_NAMED_STYLE__LAYERS_STACK);
+
+ layersStackEClass = createEClass(LAYERS_STACK);
+ createEReference(layersStackEClass, LAYERS_STACK__LAYERS);
+ createEAttribute(layersStackEClass, LAYERS_STACK__NAME);
+ createEAttribute(layersStackEClass, LAYERS_STACK__DESCRIPTION);
+ createEReference(layersStackEClass, LAYERS_STACK__DIAGRAM);
+ createEAttribute(layersStackEClass, LAYERS_STACK__STATE);
+ createEOperation(layersStackEClass, LAYERS_STACK___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY);
+ createEOperation(layersStackEClass, LAYERS_STACK___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST);
+ createEOperation(layersStackEClass, LAYERS_STACK___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY);
+ createEOperation(layersStackEClass, LAYERS_STACK___START_AFTER_CREATION);
+ createEOperation(layersStackEClass, LAYERS_STACK___ATTACH_LAYERS);
+ createEOperation(layersStackEClass, LAYERS_STACK___ATTACH);
+ createEOperation(layersStackEClass, LAYERS_STACK___DETACH);
+ createEOperation(layersStackEClass, LAYERS_STACK___ENTER_ATTACHED_STATE);
+ createEOperation(layersStackEClass, LAYERS_STACK___EXIT_ATTACHED_STATE);
+
+ layerExpressionEClass = createEClass(LAYER_EXPRESSION);
+ createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__NAME);
+ createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__DESCRIPTION);
+ createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL);
+ createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__IS_LAYER_ENABLED);
+ createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__IS_BRANCH_ENABLED);
+ createEReference(layerExpressionEClass, LAYER_EXPRESSION__OWNING_LAYERS_STACK);
+ createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__STATE);
+ createEOperation(layerExpressionEClass, LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY);
+ createEOperation(layerExpressionEClass, LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY);
+ createEOperation(layerExpressionEClass, LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST);
+ createEOperation(layerExpressionEClass, LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK);
+ createEOperation(layerExpressionEClass, LAYER_EXPRESSION___GET_LAYERS_STACK);
+ createEOperation(layerExpressionEClass, LAYER_EXPRESSION___ENTER_ATTACHED_STATE);
+ createEOperation(layerExpressionEClass, LAYER_EXPRESSION___ATTACH);
+ createEOperation(layerExpressionEClass, LAYER_EXPRESSION___DETACH);
+ createEOperation(layerExpressionEClass, LAYER_EXPRESSION___EXIT_ATTACHED_STATE);
+
+ applicationDependantElementEClass = createEClass(APPLICATION_DEPENDANT_ELEMENT);
+ createEReference(applicationDependantElementEClass, APPLICATION_DEPENDANT_ELEMENT__APPLICATION);
+
+ layersStackApplicationEClass = createEClass(LAYERS_STACK_APPLICATION);
+ createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__LAYERS_STACKS);
+ createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY);
+ createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY);
+ createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY);
+ createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__FACTORY);
+ createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY);
+ createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY);
+ createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___GET_LAYERS_STACK_FOR__DIAGRAM);
+ createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___REMOVE_LAYERS_STACK_FOR__DIAGRAM);
+ createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___IS_LAYERS_STACK_ATTACHED_FOR__DIAGRAM);
+ createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___CREATE_LAYERS_STACK_FOR__DIAGRAM);
+ createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___LOOKUP_LAYERS_STACK_FOR__DIAGRAM);
+
+ folderElementEClass = createEClass(FOLDER_ELEMENT);
+
+ layerStackDescriptorRegistryEClass = createEClass(LAYER_STACK_DESCRIPTOR_REGISTRY);
+
+ propertyRegistryEClass = createEClass(PROPERTY_REGISTRY);
+ createEReference(propertyRegistryEClass, PROPERTY_REGISTRY__PROPERTIES);
+ createEReference(propertyRegistryEClass, PROPERTY_REGISTRY__TYPE_REGISTRY);
+ createEAttribute(propertyRegistryEClass, PROPERTY_REGISTRY__PROPERTIES_COUNT);
+ createEOperation(propertyRegistryEClass, PROPERTY_REGISTRY___GET_PROPERTY_INDEX__STRING);
+ createEOperation(propertyRegistryEClass, PROPERTY_REGISTRY___GET_PROPERTY__STRING);
+ createEOperation(propertyRegistryEClass, PROPERTY_REGISTRY___ADD_PROPERTY__PROPERTY);
+
+ propertyEClass = createEClass(PROPERTY);
+ createEReference(propertyEClass, PROPERTY__TYPE);
+ createEReference(propertyEClass, PROPERTY__DEFAULT_VALUE);
+ createEAttribute(propertyEClass, PROPERTY__NAME);
+ createEAttribute(propertyEClass, PROPERTY__DESCRIPTION);
+ createEAttribute(propertyEClass, PROPERTY__INDEX);
+ createEOperation(propertyEClass, PROPERTY___CREATE_INSTANCE);
+
+ typeEClass = createEClass(TYPE);
+ createEReference(typeEClass, TYPE__METAMODEL);
+ createEAttribute(typeEClass, TYPE__NAME);
+ createEAttribute(typeEClass, TYPE__DESCRIPTION);
+ createEOperation(typeEClass, TYPE___CREATE_INSTANCE);
+
+ metamodelEClass = createEClass(METAMODEL);
+ createEAttribute(metamodelEClass, METAMODEL__NAME);
+ createEAttribute(metamodelEClass, METAMODEL__DESCRIPTION);
+ createEAttribute(metamodelEClass, METAMODEL__NSURI);
+ createEAttribute(metamodelEClass, METAMODEL__PLUGIN_ID);
+ createEAttribute(metamodelEClass, METAMODEL__EPACKAGE_INSTANCE_NAME);
+ createEAttribute(metamodelEClass, METAMODEL__IS_TYPE_VALID);
+ createEOperation(metamodelEClass, METAMODEL___GET_EPACKAGE);
+
+ typeInstanceEClass = createEClass(TYPE_INSTANCE);
+ createEOperation(typeInstanceEClass, TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING);
+ createEOperation(typeInstanceEClass, TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE);
+
+ computePropertyValueCommandItfEClass = createEClass(COMPUTE_PROPERTY_VALUE_COMMAND_ITF);
+ createEOperation(computePropertyValueCommandItfEClass, COMPUTE_PROPERTY_VALUE_COMMAND_ITF___GET_CMD_VALUE);
+
+ typeRegistryEClass = createEClass(TYPE_REGISTRY);
+ createEReference(typeRegistryEClass, TYPE_REGISTRY__TYPES);
+
+ stringToTypeMapEClass = createEClass(STRING_TO_TYPE_MAP);
+ createEReference(stringToTypeMapEClass, STRING_TO_TYPE_MAP__VALUE);
+ createEAttribute(stringToTypeMapEClass, STRING_TO_TYPE_MAP__KEY);
+
+ layerDescriptorRegistryEClass = createEClass(LAYER_DESCRIPTOR_REGISTRY);
+ createEReference(layerDescriptorRegistryEClass, LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS);
+
+ layerDescriptorEClass = createEClass(LAYER_DESCRIPTOR);
+ createEReference(layerDescriptorEClass, LAYER_DESCRIPTOR__PROPERTY_REGISTRY);
+
+ layerApplicationFactoryEClass = createEClass(LAYER_APPLICATION_FACTORY);
+ createEReference(layerApplicationFactoryEClass, LAYER_APPLICATION_FACTORY__APPLICATION);
+
+ propertySetterRegistryEClass = createEClass(PROPERTY_SETTER_REGISTRY);
+ createEReference(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS);
+ createEReference(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY__SETTER_MAP);
+ createEReference(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY__APPLICATION);
+ createEOperation(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__PROPERTY);
+ createEOperation(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__STRING);
+ createEOperation(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY___ADD_PROPERTY_SETTER__PROPERTYSETTER);
+
+ propertySetterEClass = createEClass(PROPERTY_SETTER);
+ createEReference(propertySetterEClass, PROPERTY_SETTER__PROPERTY);
+ createEAttribute(propertySetterEClass, PROPERTY_SETTER__PROPERTY_NAME);
+ createEOperation(propertySetterEClass, PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE);
+
+ stringToPropertySetterEClass = createEClass(STRING_TO_PROPERTY_SETTER);
+ createEAttribute(stringToPropertySetterEClass, STRING_TO_PROPERTY_SETTER__KEY);
+ createEReference(stringToPropertySetterEClass, STRING_TO_PROPERTY_SETTER__VALUE);
+
+ layerOperatorDescriptorRegistryEClass = createEClass(LAYER_OPERATOR_DESCRIPTOR_REGISTRY);
+ createEReference(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS);
+ createEReference(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS);
+ createEAttribute(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE);
+ createEReference(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR);
+ createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_LAYER_OPERATOR_DESCRIPTOR__LAYEROPERATORDESCRIPTOR);
+ createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_LAYER_OPERATOR_DESCRIPTOR__STRING);
+ createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_PROPERTY_OPERATOR__PROPERTYOPERATOR);
+ createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_PROPERTY_OPERATOR__STRING);
+ createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ATTACH_OPERATOR_TO_DESCRIPTOR__PROPERTY_STRING_STRING);
+ createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___CREATE_LAYER_OPERATOR__STRING);
+
+ layerOperatorDescriptorEClass = createEClass(LAYER_OPERATOR_DESCRIPTOR);
+ createEReference(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS);
+ createEAttribute(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR__NAME);
+ createEOperation(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY);
+ createEOperation(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR);
+ createEOperation(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR);
+ createEOperation(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR);
+
+ propertyOperatorEClass = createEClass(PROPERTY_OPERATOR);
+ createEAttribute(propertyOperatorEClass, PROPERTY_OPERATOR__NAME);
+ createEOperation(propertyOperatorEClass, PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST);
+
+ abstractLayerOperatorEClass = createEClass(ABSTRACT_LAYER_OPERATOR);
+ createEReference(abstractLayerOperatorEClass, ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR);
+ createEAttribute(abstractLayerOperatorEClass, ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME);
+ createEOperation(abstractLayerOperatorEClass, ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET);
+ createEOperation(abstractLayerOperatorEClass, ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR);
+
+ layerOperatorEClass = createEClass(LAYER_OPERATOR);
+ createEReference(layerOperatorEClass, LAYER_OPERATOR__LAYERS);
+
+ layersContainerEClass = createEClass(LAYERS_CONTAINER);
+ createEOperation(layersContainerEClass, LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION);
+
+ defaultPropertyOperatorEClass = createEClass(DEFAULT_PROPERTY_OPERATOR);
+
+ abstractLayerEClass = createEClass(ABSTRACT_LAYER);
+ createEReference(abstractLayerEClass, ABSTRACT_LAYER__PROPERTY_VALUES);
+ createEReference(abstractLayerEClass, ABSTRACT_LAYER__PROPERTY_VALUE_MAP);
+ createEReference(abstractLayerEClass, ABSTRACT_LAYER__LAYER_DESCRIPTOR);
+ createEReference(abstractLayerEClass, ABSTRACT_LAYER__VIEWS);
+ createEReference(abstractLayerEClass, ABSTRACT_LAYER__ATTACHED_PROPERTIES);
+ createEOperation(abstractLayerEClass, ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY);
+ createEOperation(abstractLayerEClass, ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY);
+ createEOperation(abstractLayerEClass, ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY);
+ createEOperation(abstractLayerEClass, ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING);
+
+ stringToTypeInstanceMapEClass = createEClass(STRING_TO_TYPE_INSTANCE_MAP);
+ createEAttribute(stringToTypeInstanceMapEClass, STRING_TO_TYPE_INSTANCE_MAP__KEY);
+ createEReference(stringToTypeInstanceMapEClass, STRING_TO_TYPE_INSTANCE_MAP__VALUE);
+
+ folderEClass = createEClass(FOLDER);
+ createEReference(folderEClass, FOLDER__ELEMENTS);
+ createEAttribute(folderEClass, FOLDER__NAME);
+
+ intInstanceEClass = createEClass(INT_INSTANCE);
+ createEAttribute(intInstanceEClass, INT_INSTANCE__VALUE);
+
+ booleanInstanceEClass = createEClass(BOOLEAN_INSTANCE);
+ createEAttribute(booleanInstanceEClass, BOOLEAN_INSTANCE__VALUE);
+
+ stringInstanceEClass = createEClass(STRING_INSTANCE);
+ createEAttribute(stringInstanceEClass, STRING_INSTANCE__VALUE);
+
+ intTypeEClass = createEClass(INT_TYPE);
+
+ booleanTypeEClass = createEClass(BOOLEAN_TYPE);
+
+ stringTypeEClass = createEClass(STRING_TYPE);
+
+ customTypeEClass = createEClass(CUSTOM_TYPE);
+ createEAttribute(customTypeEClass, CUSTOM_TYPE__CLASSIFIER);
+
+ topLayerOperatorEClass = createEClass(TOP_LAYER_OPERATOR);
+
+ stackedLayerOperatorEClass = createEClass(STACKED_LAYER_OPERATOR);
+
+ customLayerOperatorEClass = createEClass(CUSTOM_LAYER_OPERATOR);
+
+ propertyIndexEClass = createEClass(PROPERTY_INDEX);
+ createEReference(propertyIndexEClass, PROPERTY_INDEX__PROPERTY);
+ createEAttribute(propertyIndexEClass, PROPERTY_INDEX__INDEX);
+
+ stringToPropertyIndexMapEClass = createEClass(STRING_TO_PROPERTY_INDEX_MAP);
+ createEReference(stringToPropertyIndexMapEClass, STRING_TO_PROPERTY_INDEX_MAP__VALUE);
+ createEAttribute(stringToPropertyIndexMapEClass, STRING_TO_PROPERTY_INDEX_MAP__KEY);
+
+ simpleLayerDescriptorEClass = createEClass(SIMPLE_LAYER_DESCRIPTOR);
+
+ regExpLayerDescriptorEClass = createEClass(REG_EXP_LAYER_DESCRIPTOR);
+
+ nullInstanceEClass = createEClass(NULL_INSTANCE);
+ createEOperation(nullInstanceEClass, NULL_INSTANCE___GET_INSTANCE);
+
+ regExpLayerEClass = createEClass(REG_EXP_LAYER);
+ createEAttribute(regExpLayerEClass, REG_EXP_LAYER__EXPR);
+ createEAttribute(regExpLayerEClass, REG_EXP_LAYER__LANGUAGE);
+ createEAttribute(regExpLayerEClass, REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT);
+ createEAttribute(regExpLayerEClass, REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL);
+ createEAttribute(regExpLayerEClass, REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT);
+ createEAttribute(regExpLayerEClass, REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL);
+ createEAttribute(regExpLayerEClass, REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE);
+ createEOperation(regExpLayerEClass, REG_EXP_LAYER___ACTIVATE__ABSTRACTLAYEROPERATOR);
+ createEOperation(regExpLayerEClass, REG_EXP_LAYER___DEACTIVATE__ABSTRACTLAYEROPERATOR);
+ createEOperation(regExpLayerEClass, REG_EXP_LAYER___IS_DERIVED_VIEW__VIEW);
+ createEOperation(regExpLayerEClass, REG_EXP_LAYER___ATTACH_DERIVED_VIEW__VIEW);
+ createEOperation(regExpLayerEClass, REG_EXP_LAYER___ATTACH_DERIVED_VIEWS__ELIST);
+ createEOperation(regExpLayerEClass, REG_EXP_LAYER___ATTACH_DERIVED_VIEWS);
+ createEOperation(regExpLayerEClass, REG_EXP_LAYER___LOOKUP_DERIVED_VIEWS__ELIST);
+
+ layerEClass = createEClass(LAYER);
+
+ colorEClass = createEClass(COLOR);
+
+ colorInstanceEClass = createEClass(COLOR_INSTANCE);
+ createEAttribute(colorInstanceEClass, COLOR_INSTANCE__VALUE);
+
+ fillInstanceEClass = createEClass(FILL_INSTANCE);
+ createEAttribute(fillInstanceEClass, FILL_INSTANCE__TRANSPARENCY);
+ createEReference(fillInstanceEClass, FILL_INSTANCE__FILL_COLOR);
+
+ fillEClass = createEClass(FILL);
+
+ fillPropertySetterEClass = createEClass(FILL_PROPERTY_SETTER);
+
+ isValidPropertySetterEClass = createEClass(IS_VALID_PROPERTY_SETTER);
+
+ nullPropertySetterEClass = createEClass(NULL_PROPERTY_SETTER);
+
+ lineTypeEClass = createEClass(LINE_TYPE);
+
+ lineInstanceEClass = createEClass(LINE_INSTANCE);
+ createEAttribute(lineInstanceEClass, LINE_INSTANCE__LINE_COLOR);
+ createEAttribute(lineInstanceEClass, LINE_INSTANCE__LINE_WITH);
+
+ linePropertySetterEClass = createEClass(LINE_PROPERTY_SETTER);
+
+ fontPropertySetterEClass = createEClass(FONT_PROPERTY_SETTER);
+
+ fontInstanceEClass = createEClass(FONT_INSTANCE);
+ createEAttribute(fontInstanceEClass, FONT_INSTANCE__FONT_COLOR);
+ createEAttribute(fontInstanceEClass, FONT_INSTANCE__FONT_NAME);
+ createEAttribute(fontInstanceEClass, FONT_INSTANCE__FONT_HEIGH);
+ createEAttribute(fontInstanceEClass, FONT_INSTANCE__BOLD);
+
+ fontTypeEClass = createEClass(FONT_TYPE);
+
+ isVisiblePropertySetterEClass = createEClass(IS_VISIBLE_PROPERTY_SETTER);
+
+ topLayerOperatorDescriptorEClass = createEClass(TOP_LAYER_OPERATOR_DESCRIPTOR);
+
+ stackedLayerOperatorDescriptorEClass = createEClass(STACKED_LAYER_OPERATOR_DESCRIPTOR);
+
+ customPropertyOperatorEClass = createEClass(CUSTOM_PROPERTY_OPERATOR);
+ createEAttribute(customPropertyOperatorEClass, CUSTOM_PROPERTY_OPERATOR__CLASSNAME);
+ createEAttribute(customPropertyOperatorEClass, CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE);
+ createEAttribute(customPropertyOperatorEClass, CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID);
+ createEOperation(customPropertyOperatorEClass, CUSTOM_PROPERTY_OPERATOR___RESET_OPERATOR_INSTANCE);
+
+ andStackedLayerOperatorDescriptorEClass = createEClass(AND_STACKED_LAYER_OPERATOR_DESCRIPTOR);
+
+ orStackedLayerOperatorDescriptorEClass = createEClass(OR_STACKED_LAYER_OPERATOR_DESCRIPTOR);
+
+ isAbstractUmlSetterEClass = createEClass(IS_ABSTRACT_UML_SETTER);
+
+ allViewsDerivedLayerEClass = createEClass(ALL_VIEWS_DERIVED_LAYER);
+
+ // Create enums
+ layerStateEEnum = createEEnum(LAYER_STATE);
+ eventLevelEEnum = createEEnum(EVENT_LEVEL);
+
+ // Create data types
+ stringEDataType = createEDataType(STRING);
+ booleanEDataType = createEDataType(BOOLEAN);
+ ePackageEDataType = createEDataType(EPACKAGE);
+ layersExceptionEDataType = createEDataType(LAYERS_EXCEPTION);
+ intEDataType = createEDataType(INT);
+ badStateExceptionEDataType = createEDataType(BAD_STATE_EXCEPTION);
+ notFoundExceptionEDataType = createEDataType(NOT_FOUND_EXCEPTION);
+ computePropertyValueCommandEDataType = createEDataType(COMPUTE_PROPERTY_VALUE_COMMAND);
+ objectEDataType = createEDataType(OBJECT);
+ customPropertyOpertorInstanceEDataType = createEDataType(CUSTOM_PROPERTY_OPERTOR_INSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ NotationPackage theNotationPackage = (NotationPackage)EPackage.Registry.INSTANCE.getEPackage(NotationPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ layerNamedStyleEClass.getESuperTypes().add(theNotationPackage.getNamedStyle());
+ layersStackEClass.getESuperTypes().add(this.getLayersContainer());
+ layerExpressionEClass.getESuperTypes().add(this.getApplicationDependantElement());
+ layersStackApplicationEClass.getESuperTypes().add(this.getFolderElement());
+ propertyEClass.getESuperTypes().add(this.getFolderElement());
+ typeEClass.getESuperTypes().add(this.getFolderElement());
+ metamodelEClass.getESuperTypes().add(this.getFolderElement());
+ typeInstanceEClass.getESuperTypes().add(this.getComputePropertyValueCommandItf());
+ abstractLayerOperatorEClass.getESuperTypes().add(this.getLayerOperator());
+ layerOperatorEClass.getESuperTypes().add(this.getLayerExpression());
+ layerOperatorEClass.getESuperTypes().add(this.getLayersContainer());
+ defaultPropertyOperatorEClass.getESuperTypes().add(this.getPropertyOperator());
+ abstractLayerEClass.getESuperTypes().add(this.getLayerExpression());
+ folderEClass.getESuperTypes().add(this.getFolderElement());
+ intInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+ booleanInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+ stringInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+ intTypeEClass.getESuperTypes().add(this.getType());
+ booleanTypeEClass.getESuperTypes().add(this.getType());
+ stringTypeEClass.getESuperTypes().add(this.getType());
+ customTypeEClass.getESuperTypes().add(this.getType());
+ topLayerOperatorEClass.getESuperTypes().add(this.getAbstractLayerOperator());
+ stackedLayerOperatorEClass.getESuperTypes().add(this.getAbstractLayerOperator());
+ customLayerOperatorEClass.getESuperTypes().add(this.getLayerOperator());
+ simpleLayerDescriptorEClass.getESuperTypes().add(this.getLayerDescriptor());
+ regExpLayerDescriptorEClass.getESuperTypes().add(this.getLayerDescriptor());
+ nullInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+ regExpLayerEClass.getESuperTypes().add(this.getAbstractLayer());
+ layerEClass.getESuperTypes().add(this.getAbstractLayer());
+ colorEClass.getESuperTypes().add(this.getType());
+ colorInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+ fillInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+ fillEClass.getESuperTypes().add(this.getType());
+ fillPropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+ isValidPropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+ nullPropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+ lineTypeEClass.getESuperTypes().add(this.getType());
+ lineInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+ linePropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+ fontPropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+ fontInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+ fontTypeEClass.getESuperTypes().add(this.getType());
+ isVisiblePropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+ topLayerOperatorDescriptorEClass.getESuperTypes().add(this.getLayerOperatorDescriptor());
+ stackedLayerOperatorDescriptorEClass.getESuperTypes().add(this.getLayerOperatorDescriptor());
+ customPropertyOperatorEClass.getESuperTypes().add(this.getPropertyOperator());
+ andStackedLayerOperatorDescriptorEClass.getESuperTypes().add(this.getStackedLayerOperatorDescriptor());
+ orStackedLayerOperatorDescriptorEClass.getESuperTypes().add(this.getStackedLayerOperatorDescriptor());
+ isAbstractUmlSetterEClass.getESuperTypes().add(this.getPropertySetter());
+ allViewsDerivedLayerEClass.getESuperTypes().add(this.getAbstractLayer());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(layerNamedStyleEClass, LayerNamedStyle.class, "LayerNamedStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayerNamedStyle_LayersStack(), this.getLayersStack(), null, "layersStack", null, 0, -1, LayerNamedStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(layersStackEClass, LayersStack.class, "LayersStack", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayersStack_Layers(), this.getLayerExpression(), null, "layers", null, 0, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getLayersStack_Name(), this.getString(), "name", null, 1, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getLayersStack_Description(), this.getString(), "description", null, 1, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayersStack_Diagram(), theNotationPackage.getDiagram(), null, "diagram", null, 0, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getLayersStack_State(), this.getLayerState(), "state", "detached", 1, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ EOperation op = initEOperation(getLayersStack__GetComputePropertyValueCommand__View_Property(), this.getComputePropertyValueCommand(), "getComputePropertyValueCommand", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayersStack__GetPropertiesComputePropertyValueCommand__View_EList(), this.getComputePropertyValueCommand(), "getPropertiesComputePropertyValueCommand", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, -1, IS_UNIQUE, IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayersStack__GetViewsComputePropertyValueCommand__EList_Property(), this.getComputePropertyValueCommand(), "getViewsComputePropertyValueCommand", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "view", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ initEOperation(getLayersStack__StartAfterCreation(), null, "startAfterCreation", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getLayersStack__AttachLayers(), null, "attachLayers", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayersStack__Attach(), null, "attach", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayersStack__Detach(), null, "detach", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayersStack__EnterAttachedState(), null, "enterAttachedState", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ initEOperation(getLayersStack__ExitAttachedState(), null, "exitAttachedState", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(layerExpressionEClass, LayerExpression.class, "LayerExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getLayerExpression_Name(), this.getString(), "name", null, 1, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getLayerExpression_Description(), this.getString(), "description", null, 1, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getLayerExpression_IsLayerEnabledInternal(), this.getboolean(), "isLayerEnabledInternal", null, 1, 1, LayerExpression.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getLayerExpression_IsLayerEnabled(), this.getboolean(), "isLayerEnabled", "true", 1, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getLayerExpression_IsBranchEnabled(), this.getboolean(), "isBranchEnabled", "true", 1, 1, LayerExpression.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayerExpression_OwningLayersStack(), this.getLayersStack(), null, "owningLayersStack", null, 0, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getLayerExpression_State(), this.getLayerState(), "state", "detached", 1, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getLayerExpression__GetComputePropertyValueCommand__View_Property(), this.getComputePropertyValueCommand(), "getComputePropertyValueCommand", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayerExpression__GetViewsComputePropertyValueCommand__EList_Property(), this.getComputePropertyValueCommand(), "getViewsComputePropertyValueCommand", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "view", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayerExpression__GetPropertiesComputePropertyValueCommand__View_EList(), this.getComputePropertyValueCommand(), "getPropertiesComputePropertyValueCommand", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, -1, IS_UNIQUE, IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayerExpression__AttachToLayersStack__LayersStack(), null, "attachToLayersStack", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getLayersStack(), "owningLayersStack", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getLayerExpression__GetLayersStack(), this.getLayersStack(), "getLayersStack", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ op = initEOperation(getLayerExpression__EnterAttachedState(), null, "enterAttachedState", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayerExpression__Attach(), null, "attach", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getLayerExpression__Detach(), null, "detach", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ initEOperation(getLayerExpression__ExitAttachedState(), null, "exitAttachedState", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(applicationDependantElementEClass, ApplicationDependantElement.class, "ApplicationDependantElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getApplicationDependantElement_Application(), this.getLayersStackApplication(), null, "application", null, 0, 1, ApplicationDependantElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(layersStackApplicationEClass, LayersStackApplication.class, "LayersStackApplication", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayersStackApplication_LayersStacks(), this.getLayersStack(), null, "layersStacks", null, 0, -1, LayersStackApplication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayersStackApplication_LayerStackRegistry(), this.getLayerStackDescriptorRegistry(), null, "layerStackRegistry", null, 1, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayersStackApplication_PropertyRegistry(), this.getPropertyRegistry(), null, "propertyRegistry", null, 1, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayersStackApplication_LayerDescriptorRegistry(), this.getLayerDescriptorRegistry(), null, "layerDescriptorRegistry", null, 1, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayersStackApplication_Factory(), this.getLayerApplicationFactory(), this.getLayerApplicationFactory_Application(), "factory", null, 1, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayersStackApplication_PropertySetterRegistry(), this.getPropertySetterRegistry(), this.getPropertySetterRegistry_Application(), "propertySetterRegistry", null, 0, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayersStackApplication_LayerOperatorDescriptorRegistry(), this.getLayerOperatorDescriptorRegistry(), null, "layerOperatorDescriptorRegistry", null, 0, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getLayersStackApplication__GetLayersStackFor__Diagram(), this.getLayersStack(), "getLayersStackFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getLayersStackApplication__RemoveLayersStackFor__Diagram(), null, "removeLayersStackFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getLayersStackApplication__IsLayersStackAttachedFor__Diagram(), this.getboolean(), "isLayersStackAttachedFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getLayersStackApplication__CreateLayersStackFor__Diagram(), this.getLayersStack(), "createLayersStackFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getLayersStackApplication__LookupLayersStackFor__Diagram(), this.getLayersStack(), "lookupLayersStackFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ initEClass(folderElementEClass, FolderElement.class, "FolderElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(layerStackDescriptorRegistryEClass, LayerStackDescriptorRegistry.class, "LayerStackDescriptorRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(propertyRegistryEClass, PropertyRegistry.class, "PropertyRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPropertyRegistry_Properties(), this.getProperty(), null, "properties", null, 0, -1, PropertyRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPropertyRegistry_TypeRegistry(), this.getTypeRegistry(), null, "typeRegistry", null, 0, 1, PropertyRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getPropertyRegistry_PropertiesCount(), this.getint(), "propertiesCount", null, 1, 1, PropertyRegistry.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getPropertyRegistry__GetPropertyIndex__String(), this.getint(), "getPropertyIndex", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "propertyName", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ op = initEOperation(getPropertyRegistry__GetProperty__String(), this.getProperty(), "getProperty", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "propertyName", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ op = initEOperation(getPropertyRegistry__AddProperty__Property(), null, "addProperty", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getProperty_Type(), this.getType(), null, "type", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getProperty_DefaultValue(), this.getTypeInstance(), null, "defaultValue", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getProperty_Name(), this.getString(), "name", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getProperty_Description(), this.getString(), "description", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getProperty_Index(), this.getint(), "index", "-1", 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getProperty__CreateInstance(), this.getTypeInstance(), "createInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getBadStateException());
+
+ initEClass(typeEClass, Type.class, "Type", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getType_Metamodel(), this.getMetamodel(), null, "metamodel", null, 1, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getType_Name(), this.getString(), "name", null, 1, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getType_Description(), this.getString(), "description", null, 1, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEOperation(getType__CreateInstance(), this.getTypeInstance(), "createInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(metamodelEClass, Metamodel.class, "Metamodel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getMetamodel_Name(), this.getString(), "name", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getMetamodel_Description(), this.getString(), "description", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getMetamodel_Nsuri(), this.getString(), "nsuri", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getMetamodel_PluginID(), this.getString(), "pluginID", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getMetamodel_EPackageInstanceName(), this.getString(), "ePackageInstanceName", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getMetamodel_IsTypeValid(), this.getboolean(), "isTypeValid", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEOperation(getMetamodel__GetEPackage(), this.getEPackage(), "getEPackage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(typeInstanceEClass, TypeInstance.class, "TypeInstance", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = initEOperation(getTypeInstance__SetValueFromString__String(), null, "setValueFromString", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "value", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getTypeInstance__SetValueFromInstance__TypeInstance(), null, "setValueFromInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getTypeInstance(), "value", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(computePropertyValueCommandItfEClass, ComputePropertyValueCommand.class, "ComputePropertyValueCommandItf", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ op = initEOperation(getComputePropertyValueCommandItf__GetCmdValue(), this.getTypeInstance(), "getCmdValue", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ initEClass(typeRegistryEClass, TypeRegistry.class, "TypeRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTypeRegistry_Types(), this.getStringToTypeMap(), null, "types", null, 0, -1, TypeRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(stringToTypeMapEClass, Map.Entry.class, "StringToTypeMap", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getStringToTypeMap_Value(), this.getType(), null, "value", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getStringToTypeMap_Key(), this.getString(), "key", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(layerDescriptorRegistryEClass, LayerDescriptorRegistry.class, "LayerDescriptorRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayerDescriptorRegistry_LayerDescriptors(), this.getLayerDescriptor(), null, "layerDescriptors", null, 0, -1, LayerDescriptorRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(layerDescriptorEClass, LayerDescriptor.class, "LayerDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayerDescriptor_PropertyRegistry(), this.getPropertyRegistry(), null, "propertyRegistry", null, 1, 1, LayerDescriptor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(layerApplicationFactoryEClass, LayerApplicationFactory.class, "LayerApplicationFactory", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayerApplicationFactory_Application(), this.getLayersStackApplication(), this.getLayersStackApplication_Factory(), "application", null, 0, 1, LayerApplicationFactory.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(propertySetterRegistryEClass, PropertySetterRegistry.class, "PropertySetterRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPropertySetterRegistry_PropertySetters(), this.getPropertySetter(), null, "propertySetters", null, 0, -1, PropertySetterRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPropertySetterRegistry_SetterMap(), this.getStringToPropertySetter(), null, "setterMap", null, 0, -1, PropertySetterRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getPropertySetterRegistry_Application(), this.getLayersStackApplication(), this.getLayersStackApplication_PropertySetterRegistry(), "application", null, 0, 1, PropertySetterRegistry.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getPropertySetterRegistry__GetPropertySetter__Property(), this.getPropertySetter(), "getPropertySetter", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ op = initEOperation(getPropertySetterRegistry__GetPropertySetter__String(), this.getPropertySetter(), "getPropertySetter", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ op = initEOperation(getPropertySetterRegistry__AddPropertySetter__PropertySetter(), null, "addPropertySetter", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getPropertySetter(), "setter", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(propertySetterEClass, PropertySetter.class, "PropertySetter", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPropertySetter_Property(), this.getProperty(), null, "property", null, 0, 1, PropertySetter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getPropertySetter_PropertyName(), this.getString(), "propertyName", null, 1, 1, PropertySetter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getPropertySetter__SetValue__View_TypeInstance(), null, "setValue", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getTypeInstance(), "value", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(stringToPropertySetterEClass, Map.Entry.class, "StringToPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getStringToPropertySetter_Key(), this.getString(), "key", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getStringToPropertySetter_Value(), this.getPropertySetter(), null, "value", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(layerOperatorDescriptorRegistryEClass, LayerOperatorDescriptorRegistry.class, "LayerOperatorDescriptorRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayerOperatorDescriptorRegistry_Descriptors(), this.getLayerOperatorDescriptor(), null, "descriptors", null, 0, -1, LayerOperatorDescriptorRegistry.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayerOperatorDescriptorRegistry_PropertyOperators(), this.getPropertyOperator(), null, "propertyOperators", null, 0, -1, LayerOperatorDescriptorRegistry.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getLayerOperatorDescriptorRegistry_PropertyCollectionSize(), this.getint(), "propertyCollectionSize", null, 1, 1, LayerOperatorDescriptorRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getLayerOperatorDescriptorRegistry_DefaultOperator(), this.getDefaultPropertyOperator(), null, "defaultOperator", null, 1, 1, LayerOperatorDescriptorRegistry.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getLayerOperatorDescriptorRegistry__AddLayerOperatorDescriptor__LayerOperatorDescriptor(), null, "addLayerOperatorDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getLayerOperatorDescriptor(), "descriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getLayerOperatorDescriptorRegistry__GetLayerOperatorDescriptor__String(), this.getLayerOperatorDescriptor(), "getLayerOperatorDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "name", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ op = initEOperation(getLayerOperatorDescriptorRegistry__AddPropertyOperator__PropertyOperator(), null, "addPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getPropertyOperator(), "operator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getLayerOperatorDescriptorRegistry__GetPropertyOperator__String(), this.getPropertyOperator(), "getPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "name", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ op = initEOperation(getLayerOperatorDescriptorRegistry__AttachOperatorToDescriptor__Property_String_String(), null, "attachOperatorToDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "operatorName", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "layerDescriptorName", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ op = initEOperation(getLayerOperatorDescriptorRegistry__CreateLayerOperator__String(), this.getAbstractLayerOperator(), "createLayerOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "layerOperatorID", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ initEClass(layerOperatorDescriptorEClass, LayerOperatorDescriptor.class, "LayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayerOperatorDescriptor_PropertyOperators(), this.getPropertyOperator(), null, "propertyOperators", null, 0, -1, LayerOperatorDescriptor.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getLayerOperatorDescriptor_Name(), this.getString(), "name", null, 1, 1, LayerOperatorDescriptor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getLayerOperatorDescriptor__GetPropertyOperator__Property(), this.getPropertyOperator(), "getPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getNotFoundException());
+
+ op = initEOperation(getLayerOperatorDescriptor__SetPropertyOperator__Property_PropertyOperator(), null, "setPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getPropertyOperator(), "operator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEOperation(getLayerOperatorDescriptor__CreateLayerOperator(), this.getAbstractLayerOperator(), "createLayerOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getLayerOperatorDescriptor__SetPropertyCollectionSize__int_DefaultPropertyOperator(), null, "setPropertyCollectionSize", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getint(), "size", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getDefaultPropertyOperator(), "defaultPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(propertyOperatorEClass, PropertyOperator.class, "PropertyOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPropertyOperator_Name(), this.getString(), "name", null, 1, 1, PropertyOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getPropertyOperator__GetComputePropertyValueCommand__EList(), this.getComputePropertyValueCommand(), "getComputePropertyValueCommand", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getComputePropertyValueCommand(), "property", 0, -1, IS_UNIQUE, IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ initEClass(abstractLayerOperatorEClass, AbstractLayerOperator.class, "AbstractLayerOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAbstractLayerOperator_LayerOperatorDescriptor(), this.getLayerOperatorDescriptor(), null, "layerOperatorDescriptor", null, 1, 1, AbstractLayerOperator.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getAbstractLayerOperator_LayerOperatorDescriptorName(), this.getString(), "layerOperatorDescriptorName", null, 1, 1, AbstractLayerOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEOperation(getAbstractLayerOperator__IsDescriptorSet(), this.getboolean(), "isDescriptorSet", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEOperation(getAbstractLayerOperator__ResetDescriptor(), null, "resetDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(layerOperatorEClass, LayerOperator.class, "LayerOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getLayerOperator_Layers(), this.getLayerExpression(), null, "layers", null, 0, -1, LayerOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(layersContainerEClass, LayersContainer.class, "LayersContainer", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = initEOperation(getLayersContainer__AddLayer__LayerExpression(), null, "addLayer", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getLayerExpression(), "layer", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(defaultPropertyOperatorEClass, DefaultPropertyOperator.class, "DefaultPropertyOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(abstractLayerEClass, AbstractLayer.class, "AbstractLayer", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAbstractLayer_PropertyValues(), this.getTypeInstance(), null, "propertyValues", null, 0, -1, AbstractLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractLayer_PropertyValueMap(), this.getStringToTypeInstanceMap(), null, "propertyValueMap", null, 0, -1, AbstractLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getAbstractLayer_LayerDescriptor(), this.getLayerDescriptor(), null, "layerDescriptor", null, 1, 1, AbstractLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getAbstractLayer_Views(), theNotationPackage.getView(), null, "views", null, 0, -1, AbstractLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getAbstractLayer_AttachedProperties(), this.getProperty(), null, "attachedProperties", null, 0, -1, AbstractLayer.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getAbstractLayer__AddPropertyInstance__Property(), this.getTypeInstance(), "addPropertyInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getAbstractLayer__RemovePropertyInstance__Property(), null, "removePropertyInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getAbstractLayer__GetPropertyInstance__Property(), this.getTypeInstance(), "getPropertyInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getAbstractLayer__GetPropertyInstance__String(), this.getTypeInstance(), "getPropertyInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getString(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ initEClass(stringToTypeInstanceMapEClass, Map.Entry.class, "StringToTypeInstanceMap", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getStringToTypeInstanceMap_Key(), this.getString(), "key", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getStringToTypeInstanceMap_Value(), this.getTypeInstance(), null, "value", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(folderEClass, Folder.class, "Folder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getFolder_Elements(), this.getFolderElement(), null, "elements", null, 0, -1, Folder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getFolder_Name(), this.getString(), "name", null, 1, 1, Folder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(intInstanceEClass, IntInstance.class, "IntInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIntInstance_Value(), this.getint(), "value", null, 1, 1, IntInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(booleanInstanceEClass, BooleanInstance.class, "BooleanInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getBooleanInstance_Value(), this.getboolean(), "value", null, 1, 1, BooleanInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(stringInstanceEClass, StringInstance.class, "StringInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getStringInstance_Value(), this.getString(), "value", null, 1, 1, StringInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(intTypeEClass, IntType.class, "IntType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(booleanTypeEClass, BooleanType.class, "BooleanType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(stringTypeEClass, StringType.class, "StringType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(customTypeEClass, CustomType.class, "CustomType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCustomType_Classifier(), this.getString(), "classifier", null, 1, 1, CustomType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(topLayerOperatorEClass, TopLayerOperator.class, "TopLayerOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(stackedLayerOperatorEClass, StackedLayerOperator.class, "StackedLayerOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(customLayerOperatorEClass, CustomLayerOperator.class, "CustomLayerOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(propertyIndexEClass, PropertyIndex.class, "PropertyIndex", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPropertyIndex_Property(), this.getProperty(), null, "property", null, 1, 1, PropertyIndex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getPropertyIndex_Index(), this.getint(), "index", null, 1, 1, PropertyIndex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(stringToPropertyIndexMapEClass, Map.Entry.class, "StringToPropertyIndexMap", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getStringToPropertyIndexMap_Value(), this.getPropertyIndex(), null, "value", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getStringToPropertyIndexMap_Key(), this.getString(), "key", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(simpleLayerDescriptorEClass, SimpleLayerDescriptor.class, "SimpleLayerDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(regExpLayerDescriptorEClass, RegExpLayerDescriptor.class, "RegExpLayerDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(nullInstanceEClass, NullInstance.class, "NullInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEOperation(getNullInstance__GetInstance(), this.getNullInstance(), "getInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(regExpLayerEClass, RegExpLayer.class, "RegExpLayer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getRegExpLayer_Expr(), this.getString(), "expr", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getRegExpLayer_Language(), this.getString(), "language", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getRegExpLayer_IsDomainChangedEventDependant(), this.getboolean(), "isDomainChangedEventDependant", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getRegExpLayer_DomainChangedEventLevel(), this.getEventLevel(), "domainChangedEventLevel", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getRegExpLayer_IsDiagramChangedEventDependant(), this.getboolean(), "isDiagramChangedEventDependant", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getRegExpLayer_DiagramChangedEventLevel(), this.getEventLevel(), "diagramChangedEventLevel", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getRegExpLayer_ExpressionContextObjectType(), this.getString(), "expressionContextObjectType", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getRegExpLayer__Activate__AbstractLayerOperator(), null, "activate", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getAbstractLayerOperator(), "newParentLayer", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getRegExpLayer__Deactivate__AbstractLayerOperator(), null, "deactivate", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getAbstractLayerOperator(), "oldParentLayer", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = initEOperation(getRegExpLayer__IsDerivedView__View(), this.getboolean(), "isDerivedView", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getRegExpLayer__AttachDerivedView__View(), null, "attachDerivedView", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getRegExpLayer__AttachDerivedViews__EList(), null, "attachDerivedViews", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "views", 0, -1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getRegExpLayer__AttachDerivedViews(), null, "attachDerivedViews", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ op = initEOperation(getRegExpLayer__LookupDerivedViews__EList(), theNotationPackage.getView(), "lookupDerivedViews", 0, -1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, theNotationPackage.getView(), "views", 0, -1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ initEClass(layerEClass, Layer.class, "Layer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(colorEClass, Color.class, "Color", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(colorInstanceEClass, ColorInstance.class, "ColorInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getColorInstance_Value(), this.getint(), "value", null, 1, 1, ColorInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(fillInstanceEClass, FillInstance.class, "FillInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFillInstance_Transparency(), this.getint(), "transparency", null, 1, 1, FillInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getFillInstance_FillColor(), this.getColorInstance(), null, "fillColor", null, 1, 1, FillInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(fillEClass, Fill.class, "Fill", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(fillPropertySetterEClass, FillPropertySetter.class, "FillPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(isValidPropertySetterEClass, IsValidPropertySetter.class, "IsValidPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(nullPropertySetterEClass, NullPropertySetter.class, "NullPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(lineTypeEClass, LineType.class, "LineType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(lineInstanceEClass, LineInstance.class, "LineInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getLineInstance_LineColor(), this.getint(), "lineColor", null, 1, 1, LineInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getLineInstance_LineWith(), this.getint(), "lineWith", null, 1, 1, LineInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(linePropertySetterEClass, LinePropertySetter.class, "LinePropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(fontPropertySetterEClass, FontPropertySetter.class, "FontPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(fontInstanceEClass, FontInstance.class, "FontInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFontInstance_FontColor(), this.getint(), "fontColor", "15053796", 1, 1, FontInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getFontInstance_FontName(), this.getString(), "fontName", "Segoe UI", 1, 1, FontInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getFontInstance_FontHeigh(), this.getint(), "fontHeigh", "9", 1, 1, FontInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getFontInstance_Bold(), this.getboolean(), "bold", "true", 1, 1, FontInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(fontTypeEClass, FontType.class, "FontType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(isVisiblePropertySetterEClass, IsVisiblePropertySetter.class, "IsVisiblePropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(topLayerOperatorDescriptorEClass, TopLayerOperatorDescriptor.class, "TopLayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(stackedLayerOperatorDescriptorEClass, StackedLayerOperatorDescriptor.class, "StackedLayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(customPropertyOperatorEClass, CustomPropertyOperator.class, "CustomPropertyOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCustomPropertyOperator_Classname(), this.getString(), "classname", null, 1, 1, CustomPropertyOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getCustomPropertyOperator_OperatorInstance(), this.getCustomPropertyOpertorInstance(), "operatorInstance", null, 1, 1, CustomPropertyOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getCustomPropertyOperator_ClassBundleID(), this.getString(), "classBundleID", null, 1, 1, CustomPropertyOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = initEOperation(getCustomPropertyOperator__ResetOperatorInstance(), null, "resetOperatorInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEException(op, this.getLayersException());
+
+ initEClass(andStackedLayerOperatorDescriptorEClass, AndStackedLayerOperatorDescriptor.class, "AndStackedLayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(orStackedLayerOperatorDescriptorEClass, OrStackedLayerOperatorDescriptor.class, "OrStackedLayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(isAbstractUmlSetterEClass, IsAbstractUmlSetter.class, "IsAbstractUmlSetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(allViewsDerivedLayerEClass, AllViewsDerivedLayer.class, "AllViewsDerivedLayer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ // Initialize enums and add enum literals
+ initEEnum(layerStateEEnum, LayerState.class, "LayerState");
+ addEEnumLiteral(layerStateEEnum, LayerState.DETACHED);
+ addEEnumLiteral(layerStateEEnum, LayerState.ATTACHED);
+
+ initEEnum(eventLevelEEnum, EventLevel.class, "EventLevel");
+ addEEnumLiteral(eventLevelEEnum, EventLevel.LEVEL1);
+ addEEnumLiteral(eventLevelEEnum, EventLevel.ALL_LEVELS);
+
+ // Initialize data types
+ initEDataType(stringEDataType, String.class, "String", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(booleanEDataType, boolean.class, "boolean", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(ePackageEDataType, EPackage.class, "EPackage", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(layersExceptionEDataType, LayersException.class, "LayersException", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(intEDataType, int.class, "int", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(badStateExceptionEDataType, BadStateException.class, "BadStateException", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(notFoundExceptionEDataType, NotFoundException.class, "NotFoundException", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(computePropertyValueCommandEDataType, ComputePropertyValueCommand.class, "ComputePropertyValueCommand", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(objectEDataType, Object.class, "Object", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(customPropertyOpertorInstanceEDataType, CustomPropertyOperatorsInstance.class, "CustomPropertyOpertorInstance", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+ createExtendedMetaDataAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createExtendedMetaDataAnnotations() {
+ String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+ addAnnotation
+ (badStateExceptionEDataType,
+ source,
+ new String[] {
+ "baseType", "LayersException"
+ });
+ addAnnotation
+ (notFoundExceptionEDataType,
+ source,
+ new String[] {
+ "baseType", "LayersException"
+ });
+ }
+
+} //LayersPackageImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImpl.java
new file mode 100644
index 00000000000..e7dcc306250
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImpl.java
@@ -0,0 +1,744 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Stack Application</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayersStacks <em>Layers Stacks</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayerStackRegistry <em>Layer Stack Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getPropertyRegistry <em>Property Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayerDescriptorRegistry <em>Layer Descriptor Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getFactory <em>Factory</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getPropertySetterRegistry <em>Property Setter Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayersStackApplicationImpl extends
+FolderElementImpl implements LayersStackApplication {
+ /**
+ * The cached value of the '{@link #getLayersStacks() <em>Layers Stacks</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayersStacks()
+ * @generated
+ * @ordered
+ */
+ protected EList<LayersStack> layersStacks;
+
+ /**
+ * The cached value of the '{@link #getLayerStackRegistry() <em>Layer Stack Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayerStackRegistry()
+ * @generated
+ * @ordered
+ */
+ protected LayerStackDescriptorRegistry layerStackRegistry;
+ /**
+ * The cached value of the '{@link #getPropertyRegistry() <em>Property Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyRegistry()
+ * @generated
+ * @ordered
+ */
+ protected PropertyRegistry propertyRegistry;
+
+ /**
+ * The cached value of the '{@link #getLayerDescriptorRegistry() <em>Layer Descriptor Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayerDescriptorRegistry()
+ * @generated
+ * @ordered
+ */
+ protected LayerDescriptorRegistry layerDescriptorRegistry;
+
+ /**
+ * The cached value of the '{@link #getFactory() <em>Factory</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFactory()
+ * @generated
+ * @ordered
+ */
+ protected LayerApplicationFactory factory;
+
+ /**
+ * The cached value of the '{@link #getPropertySetterRegistry() <em>Property Setter Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertySetterRegistry()
+ * @generated
+ * @ordered
+ */
+ protected PropertySetterRegistry propertySetterRegistry;
+
+ /**
+ * The cached value of the '{@link #getLayerOperatorDescriptorRegistry() <em>Layer Operator Descriptor Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayerOperatorDescriptorRegistry()
+ * @generated
+ * @ordered
+ */
+ protected LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected LayersStackApplicationImpl() {
+ super();
+ init();
+ }
+
+ /**
+ * Init the class
+ * Create the internal objects : {@link PropertyRegistry}, {@link LayerStackDescriptorRegistry}.
+ */
+ protected void init() {
+ // Create the PropertyRegistry
+ PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ setPropertyRegistry(propertyRegistry);
+
+ // Create the LayerStackDescriptorRegistry
+ LayerStackDescriptorRegistry layerStackDescriptorRegistry = LayersFactory.eINSTANCE.createLayerStackDescriptorRegistry();
+ setLayerStackRegistry(layerStackDescriptorRegistry);
+
+ // Create the LayerDescriptorRegistry
+ LayerDescriptorRegistry layerDescriptorRegistry = LayersFactory.eINSTANCE.createLayerDescriptorRegistry();
+ setLayerDescriptorRegistry(layerDescriptorRegistry);
+
+ // Create the config model and the registries loader
+ LayersConfigModel configModel = LayersConfigModel.getInstance();
+ RegistriesLoader registriesLoader = new RegistriesLoader(configModel);
+
+ // Create the LayerOperatorDescriptorRegistry
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ layerOperatorDescriptorRegistry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
+
+ registriesLoader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+ setLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry);
+
+ // Create the LayerApplicationFactory
+ LayerApplicationFactory layerApplicationFactory = LayersFactory.eINSTANCE.createLayerApplicationFactory();
+ setFactory(layerApplicationFactory);
+
+ // Create the PropertySetterRegistry
+ PropertySetterRegistry propertySetterRegistry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+ propertySetterRegistry.setApplication(this);
+ setPropertySetterRegistry(propertySetterRegistry);
+
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYERS_STACK_APPLICATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<LayersStack> getLayersStacks() {
+ if (layersStacks == null) {
+ layersStacks = new EObjectContainmentEList<LayersStack>(LayersStack.class, this, LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS);
+ }
+ return layersStacks;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerStackDescriptorRegistry getLayerStackRegistry() {
+ return layerStackRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLayerStackRegistry(LayerStackDescriptorRegistry newLayerStackRegistry, NotificationChain msgs) {
+ LayerStackDescriptorRegistry oldLayerStackRegistry = layerStackRegistry;
+ layerStackRegistry = newLayerStackRegistry;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY, oldLayerStackRegistry, newLayerStackRegistry);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLayerStackRegistry(LayerStackDescriptorRegistry newLayerStackRegistry) {
+ if (newLayerStackRegistry != layerStackRegistry) {
+ NotificationChain msgs = null;
+ if (layerStackRegistry != null)
+ msgs = ((InternalEObject)layerStackRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY, null, msgs);
+ if (newLayerStackRegistry != null)
+ msgs = ((InternalEObject)newLayerStackRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY, null, msgs);
+ msgs = basicSetLayerStackRegistry(newLayerStackRegistry, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY, newLayerStackRegistry, newLayerStackRegistry));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyRegistry getPropertyRegistry() {
+ return propertyRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPropertyRegistry(PropertyRegistry newPropertyRegistry, NotificationChain msgs) {
+ PropertyRegistry oldPropertyRegistry = propertyRegistry;
+ propertyRegistry = newPropertyRegistry;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY, oldPropertyRegistry, newPropertyRegistry);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPropertyRegistry(PropertyRegistry newPropertyRegistry) {
+ if (newPropertyRegistry != propertyRegistry) {
+ NotificationChain msgs = null;
+ if (propertyRegistry != null)
+ msgs = ((InternalEObject)propertyRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY, null, msgs);
+ if (newPropertyRegistry != null)
+ msgs = ((InternalEObject)newPropertyRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY, null, msgs);
+ msgs = basicSetPropertyRegistry(newPropertyRegistry, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY, newPropertyRegistry, newPropertyRegistry));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerDescriptorRegistry getLayerDescriptorRegistry() {
+ return layerDescriptorRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLayerDescriptorRegistry(LayerDescriptorRegistry newLayerDescriptorRegistry, NotificationChain msgs) {
+ LayerDescriptorRegistry oldLayerDescriptorRegistry = layerDescriptorRegistry;
+ layerDescriptorRegistry = newLayerDescriptorRegistry;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY, oldLayerDescriptorRegistry, newLayerDescriptorRegistry);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLayerDescriptorRegistry(LayerDescriptorRegistry newLayerDescriptorRegistry) {
+ if (newLayerDescriptorRegistry != layerDescriptorRegistry) {
+ NotificationChain msgs = null;
+ if (layerDescriptorRegistry != null)
+ msgs = ((InternalEObject)layerDescriptorRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY, null, msgs);
+ if (newLayerDescriptorRegistry != null)
+ msgs = ((InternalEObject)newLayerDescriptorRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY, null, msgs);
+ msgs = basicSetLayerDescriptorRegistry(newLayerDescriptorRegistry, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY, newLayerDescriptorRegistry, newLayerDescriptorRegistry));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerApplicationFactory getFactory() {
+ return factory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetFactory(LayerApplicationFactory newFactory, NotificationChain msgs) {
+ LayerApplicationFactory oldFactory = factory;
+ factory = newFactory;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, oldFactory, newFactory);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFactory(LayerApplicationFactory newFactory) {
+ if (newFactory != factory) {
+ NotificationChain msgs = null;
+ if (factory != null)
+ msgs = ((InternalEObject)factory).eInverseRemove(this, LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION, LayerApplicationFactory.class, msgs);
+ if (newFactory != null)
+ msgs = ((InternalEObject)newFactory).eInverseAdd(this, LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION, LayerApplicationFactory.class, msgs);
+ msgs = basicSetFactory(newFactory, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, newFactory, newFactory));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertySetterRegistry getPropertySetterRegistry() {
+ return propertySetterRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPropertySetterRegistry(PropertySetterRegistry newPropertySetterRegistry, NotificationChain msgs) {
+ PropertySetterRegistry oldPropertySetterRegistry = propertySetterRegistry;
+ propertySetterRegistry = newPropertySetterRegistry;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, oldPropertySetterRegistry, newPropertySetterRegistry);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPropertySetterRegistry(PropertySetterRegistry newPropertySetterRegistry) {
+ if (newPropertySetterRegistry != propertySetterRegistry) {
+ NotificationChain msgs = null;
+ if (propertySetterRegistry != null)
+ msgs = ((InternalEObject)propertySetterRegistry).eInverseRemove(this, LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION, PropertySetterRegistry.class, msgs);
+ if (newPropertySetterRegistry != null)
+ msgs = ((InternalEObject)newPropertySetterRegistry).eInverseAdd(this, LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION, PropertySetterRegistry.class, msgs);
+ msgs = basicSetPropertySetterRegistry(newPropertySetterRegistry, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, newPropertySetterRegistry, newPropertySetterRegistry));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerOperatorDescriptorRegistry getLayerOperatorDescriptorRegistry() {
+ return layerOperatorDescriptorRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry newLayerOperatorDescriptorRegistry, NotificationChain msgs) {
+ LayerOperatorDescriptorRegistry oldLayerOperatorDescriptorRegistry = layerOperatorDescriptorRegistry;
+ layerOperatorDescriptorRegistry = newLayerOperatorDescriptorRegistry;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY, oldLayerOperatorDescriptorRegistry, newLayerOperatorDescriptorRegistry);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry newLayerOperatorDescriptorRegistry) {
+ if (newLayerOperatorDescriptorRegistry != layerOperatorDescriptorRegistry) {
+ NotificationChain msgs = null;
+ if (layerOperatorDescriptorRegistry != null)
+ msgs = ((InternalEObject)layerOperatorDescriptorRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY, null, msgs);
+ if (newLayerOperatorDescriptorRegistry != null)
+ msgs = ((InternalEObject)newLayerOperatorDescriptorRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY, null, msgs);
+ msgs = basicSetLayerOperatorDescriptorRegistry(newLayerOperatorDescriptorRegistry, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY, newLayerOperatorDescriptorRegistry, newLayerOperatorDescriptorRegistry));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void removeLayersStackFor(Diagram diagram) {
+
+ try {
+ LayersStack stack = lookupLayersStackFor(diagram);
+ getLayersStacks().remove(stack);
+ } catch (NotFoundException e) {
+ // silently fails
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isLayersStackAttachedFor(Diagram diagram) {
+ try {
+ lookupLayersStackFor(diagram);
+ return true;
+ } catch (NotFoundException e) {
+ // not found
+ return false;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public LayersStack lookupLayersStackFor(Diagram diagram) throws NotFoundException {
+ for( LayersStack stack : getLayersStacks()) {
+ if( stack.getDiagram() == diagram ) {
+ return stack;
+ }
+ }
+
+ // Not found
+ throw new NotFoundException("No LayersStack attached for diagram: " + diagram);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Get the {@link LayersStack} for the specified diagram. Create it if
+ * necessary.
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public LayersStack getLayersStackFor(Diagram diagram) {
+ try {
+ return lookupLayersStackFor(diagram);
+ } catch (NotFoundException e) {
+ // Create a new one
+ return createLayersStackFor(diagram);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Create a new LayersStack for the specified diagram.
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public LayersStack createLayersStackFor(Diagram diagram) {
+
+ // Create a new LayerStack and add it to application (this)
+ LayersStack layer = LayersFactory.eINSTANCE.createLayersStack();
+ layer.startAfterCreation();
+ layer.setDiagram(diagram);
+
+ // Create first layer in stack
+ TopLayerOperator rootLayer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ rootLayer.setName("Top Layer");
+ rootLayer.setApplication(this);
+ layer.setLayers(rootLayer);
+
+ // attach stack to application
+ getLayersStacks().add(layer);
+
+
+ return layer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+ if (factory != null)
+ msgs = ((InternalEObject)factory).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, null, msgs);
+ return basicSetFactory((LayerApplicationFactory)otherEnd, msgs);
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+ if (propertySetterRegistry != null)
+ msgs = ((InternalEObject)propertySetterRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, null, msgs);
+ return basicSetPropertySetterRegistry((PropertySetterRegistry)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+ return ((InternalEList<?>)getLayersStacks()).basicRemove(otherEnd, msgs);
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+ return basicSetLayerStackRegistry(null, msgs);
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+ return basicSetPropertyRegistry(null, msgs);
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+ return basicSetLayerDescriptorRegistry(null, msgs);
+ case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+ return basicSetFactory(null, msgs);
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+ return basicSetPropertySetterRegistry(null, msgs);
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+ return basicSetLayerOperatorDescriptorRegistry(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+ return getLayersStacks();
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+ return getLayerStackRegistry();
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+ return getPropertyRegistry();
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+ return getLayerDescriptorRegistry();
+ case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+ return getFactory();
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+ return getPropertySetterRegistry();
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+ return getLayerOperatorDescriptorRegistry();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+ getLayersStacks().clear();
+ getLayersStacks().addAll((Collection<? extends LayersStack>)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+ setLayerStackRegistry((LayerStackDescriptorRegistry)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+ setPropertyRegistry((PropertyRegistry)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+ setLayerDescriptorRegistry((LayerDescriptorRegistry)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+ setFactory((LayerApplicationFactory)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+ setPropertySetterRegistry((PropertySetterRegistry)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+ setLayerOperatorDescriptorRegistry((LayerOperatorDescriptorRegistry)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+ getLayersStacks().clear();
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+ setLayerStackRegistry((LayerStackDescriptorRegistry)null);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+ setPropertyRegistry((PropertyRegistry)null);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+ setLayerDescriptorRegistry((LayerDescriptorRegistry)null);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+ setFactory((LayerApplicationFactory)null);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+ setPropertySetterRegistry((PropertySetterRegistry)null);
+ return;
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+ setLayerOperatorDescriptorRegistry((LayerOperatorDescriptorRegistry)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+ return layersStacks != null && !layersStacks.isEmpty();
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+ return layerStackRegistry != null;
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+ return propertyRegistry != null;
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+ return layerDescriptorRegistry != null;
+ case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+ return factory != null;
+ case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+ return propertySetterRegistry != null;
+ case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+ return layerOperatorDescriptorRegistry != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.LAYERS_STACK_APPLICATION___GET_LAYERS_STACK_FOR__DIAGRAM:
+ return getLayersStackFor((Diagram)arguments.get(0));
+ case LayersPackage.LAYERS_STACK_APPLICATION___REMOVE_LAYERS_STACK_FOR__DIAGRAM:
+ removeLayersStackFor((Diagram)arguments.get(0));
+ return null;
+ case LayersPackage.LAYERS_STACK_APPLICATION___IS_LAYERS_STACK_ATTACHED_FOR__DIAGRAM:
+ return isLayersStackAttachedFor((Diagram)arguments.get(0));
+ case LayersPackage.LAYERS_STACK_APPLICATION___CREATE_LAYERS_STACK_FOR__DIAGRAM:
+ return createLayersStackFor((Diagram)arguments.get(0));
+ case LayersPackage.LAYERS_STACK_APPLICATION___LOOKUP_LAYERS_STACK_FOR__DIAGRAM:
+ try {
+ return lookupLayersStackFor((Diagram)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} //LayersStackApplicationImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java
new file mode 100644
index 00000000000..38f3a2d1545
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java
@@ -0,0 +1,739 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.notifier.ILayersTreeEventListener;
+import org.eclipse.papyrus.layers.stackmodel.notifier.LayersTreeEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.notifier.LayersTreeEventNotifierFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Stack</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getLayers <em>Layers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getDiagram <em>Diagram</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayersStackImpl extends
+
+MinimalEObjectImpl.Container implements LayersStack {
+ /**
+ * The cached value of the '{@link #getLayers() <em>Layers</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLayers()
+ * @generated
+ * @ordered
+ */
+ protected LayerExpression layers;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+ /**
+ * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDiagram() <em>Diagram</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiagram()
+ * @generated
+ * @ordered
+ */
+ protected Diagram diagram;
+
+ /**
+ * The default value of the '{@link #getState() <em>State</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getState()
+ * @generated
+ * @ordered
+ */
+ protected static final LayerState STATE_EDEFAULT = LayerState.DETACHED;
+
+ /**
+ * The cached value of the '{@link #getState() <em>State</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getState()
+ * @generated
+ * @ordered
+ */
+ protected LayerState state = STATE_EDEFAULT;
+
+ /**
+ * Listener on layers tree events.
+ * This listener take in charge the initialization of added layers.
+ */
+ private ILayersTreeEventListener layersTreeEventListener = new ILayersTreeEventListener() {
+
+ @Override
+ public void layerSet(Notification notification) {
+ LayersStackImpl.this.layerAdded( (LayerExpression)notification.getNewValue() );
+ }
+
+ @Override
+ public void layerRemoved(Notification notification) {
+ // nothing to do
+
+ }
+
+ @Override
+ public void layerMoved(Notification notification) {
+ // nothing to do
+
+ }
+
+ @Override
+ public void layerAdded(Notification notification) {
+ LayersStackImpl.this.layerAdded( (LayerExpression)notification.getNewValue() );
+ }
+
+ };
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected LayersStackImpl() {
+ super();
+
+ // Now, init should be called explicitly after creation.
+ //init();
+ }
+
+ /**
+ * Init this object.
+ * Create a listener on tree events.
+ */
+ private void init() {
+
+ LayersTreeEventNotifier layersTreeEventnotifier = LayersTreeEventNotifierFactory.instance.adapt(this);
+
+ layersTreeEventnotifier.addLayersModelEventListener(layersTreeEventListener);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LAYERS_STACK;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerExpression getLayers() {
+ return layers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLayers(LayerExpression newLayers, NotificationChain msgs) {
+ LayerExpression oldLayers = layers;
+ layers = newLayers;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__LAYERS, oldLayers, newLayers);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLayers(LayerExpression newLayers) {
+ if (newLayers != layers) {
+ NotificationChain msgs = null;
+ if (layers != null)
+ msgs = ((InternalEObject)layers).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK__LAYERS, null, msgs);
+ if (newLayers != null)
+ msgs = ((InternalEObject)newLayers).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK__LAYERS, null, msgs);
+ msgs = basicSetLayers(newLayers, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__LAYERS, newLayers, newLayers));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Diagram getDiagram() {
+ if (diagram != null && diagram.eIsProxy()) {
+ InternalEObject oldDiagram = (InternalEObject)diagram;
+ diagram = (Diagram)eResolveProxy(oldDiagram);
+ if (diagram != oldDiagram) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.LAYERS_STACK__DIAGRAM, oldDiagram, diagram));
+ }
+ }
+ return diagram;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Diagram basicGetDiagram() {
+ return diagram;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDiagram(Diagram newDiagram) {
+ Diagram oldDiagram = diagram;
+ diagram = newDiagram;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__DIAGRAM, oldDiagram, diagram));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayerState getState() {
+ return state;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setState(LayerState newState) {
+ LayerState oldState = state;
+ state = newState == null ? STATE_EDEFAULT : newState;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__STATE, oldState, state));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addLayer(LayerExpression layer) {
+ setLayers(layer);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws LayersException
+ * @generated NOT
+ */
+ public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+ LayerExpression layers = getLayers();
+ if(layers==null) {
+ throw new BadStateException("Layers should be set first.");
+ }
+
+ return layers.getComputePropertyValueCommand(view, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, EList<Property> property) throws LayersException {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(EList<View> view, Property property) throws LayersException {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Start this LayersStack after its creation. This method should be explicitly called by
+ * user after the creation of a LayersStack.
+ * <!-- end-user-doc -->
+ * @deprecated Not used anymore
+ * @generated NOT
+ */
+ public void startAfterCreation() {
+ // Ensure child is initialized, if any
+ if( getLayers() != null ) {
+ getLayers().attachToLayersStack(this);
+ }
+
+ // Start local behaviors
+ init();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Attach recursively the tree of layers.
+ * <!-- end-user-doc -->
+ * @throws LayersException
+ * @generated NOT
+ */
+ public void attachLayers() throws LayersException {
+ // Ensure child is started, if any
+ if( getLayers() != null ) {
+ getLayers().attach();
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void attach() throws LayersException {
+ // Stop if already in ATTACHED state.
+ if(getState() == LayerState.ATTACHED) {
+ return;
+ }
+
+ // Check required attributes
+ if( getDiagram()==null ) {
+ throw new BadStateException("A required attribute is not set. The Layer can't be attached."
+ + "[layerName=" + getName()
+ + ", diagram=" + (getDiagram()==null?"null":"ok")
+ + "]"
+ );
+ }
+
+ // Can go in attached mode
+ setState(LayerState.ATTACHED);
+ enterAttachedState();
+ attachLayers();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void detach() throws LayersException {
+ // Change the state
+ exitAttachedState();
+ setState(LayerState.DETACHED);
+ // Ensure child is started, if any
+ if( getLayers() != null ) {
+ getLayers().detach();
+ }
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void enterAttachedState() throws LayersException {
+ init();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void exitAttachedState() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws LayersException
+ * @generated NOT
+ */
+ public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> property) throws LayersException {
+ LayerExpression layers = getLayers();
+ if(layers==null) {
+ throw new BadStateException("Layers should be set first.");
+ }
+
+ return layers.getPropertiesComputePropertyValueCommand(view, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws BadStateException
+ * @generated NOT
+ */
+ public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> view, Property property) throws LayersException {
+
+ LayerExpression layers = getLayers();
+ if(layers==null) {
+ throw new BadStateException("Layers should be set first.");
+ }
+
+ return layers.getViewsComputePropertyValueCommand(view, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK__LAYERS:
+ return basicSetLayers(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK__LAYERS:
+ return getLayers();
+ case LayersPackage.LAYERS_STACK__NAME:
+ return getName();
+ case LayersPackage.LAYERS_STACK__DESCRIPTION:
+ return getDescription();
+ case LayersPackage.LAYERS_STACK__DIAGRAM:
+ if (resolve) return getDiagram();
+ return basicGetDiagram();
+ case LayersPackage.LAYERS_STACK__STATE:
+ return getState();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK__LAYERS:
+ setLayers((LayerExpression)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK__NAME:
+ setName((String)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK__DESCRIPTION:
+ setDescription((String)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK__DIAGRAM:
+ setDiagram((Diagram)newValue);
+ return;
+ case LayersPackage.LAYERS_STACK__STATE:
+ setState((LayerState)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK__LAYERS:
+ setLayers((LayerExpression)null);
+ return;
+ case LayersPackage.LAYERS_STACK__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case LayersPackage.LAYERS_STACK__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case LayersPackage.LAYERS_STACK__DIAGRAM:
+ setDiagram((Diagram)null);
+ return;
+ case LayersPackage.LAYERS_STACK__STATE:
+ setState(STATE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LAYERS_STACK__LAYERS:
+ return layers != null;
+ case LayersPackage.LAYERS_STACK__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case LayersPackage.LAYERS_STACK__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case LayersPackage.LAYERS_STACK__DIAGRAM:
+ return diagram != null;
+ case LayersPackage.LAYERS_STACK__STATE:
+ return state != STATE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.LAYERS_STACK___ADD_LAYER__LAYEREXPRESSION:
+ addLayer((LayerExpression)arguments.get(0));
+ return null;
+ case LayersPackage.LAYERS_STACK___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY:
+ try {
+ return getComputePropertyValueCommand((View)arguments.get(0), (Property)arguments.get(1));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYERS_STACK___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST:
+ try {
+ return getPropertiesComputePropertyValueCommand((View)arguments.get(0), (EList<Property>)arguments.get(1));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYERS_STACK___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY:
+ try {
+ return getViewsComputePropertyValueCommand((EList<View>)arguments.get(0), (Property)arguments.get(1));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYERS_STACK___START_AFTER_CREATION:
+ startAfterCreation();
+ return null;
+ case LayersPackage.LAYERS_STACK___ATTACH_LAYERS:
+ try {
+ attachLayers();
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYERS_STACK___ATTACH:
+ try {
+ attach();
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYERS_STACK___DETACH:
+ try {
+ detach();
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYERS_STACK___ENTER_ATTACHED_STATE:
+ try {
+ enterAttachedState();
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.LAYERS_STACK___EXIT_ATTACHED_STATE:
+ exitAttachedState();
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", description: ");
+ result.append(description);
+ result.append(", state: ");
+ result.append(state);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * A layer has been added to the layerTree.
+ * Init this layer.
+ * This method is called by the listener on layerTree events.
+ *
+ * @param addedLayer The added layer.
+ */
+ protected void layerAdded(LayerExpression addedLayer) {
+ // Stop if there is no layer
+ if( addedLayer == null) {
+ return;
+ }
+ // init the layer
+ addedLayer.attachToLayersStack(this);
+
+ }
+
+} //LayersStackImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineInstanceImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineInstanceImpl.java
new file mode 100644
index 00000000000..164f4ec3d57
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineInstanceImpl.java
@@ -0,0 +1,263 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Line Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl#getLineColor <em>Line Color</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl#getLineWith <em>Line With</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LineInstanceImpl extends TypeInstanceImpl implements LineInstance {
+ /**
+ * The default value of the '{@link #getLineColor() <em>Line Color</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLineColor()
+ * @generated
+ * @ordered
+ */
+ protected static final int LINE_COLOR_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getLineColor() <em>Line Color</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLineColor()
+ * @generated
+ * @ordered
+ */
+ protected int lineColor = LINE_COLOR_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLineWith() <em>Line With</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLineWith()
+ * @generated
+ * @ordered
+ */
+ protected static final int LINE_WITH_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getLineWith() <em>Line With</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLineWith()
+ * @generated
+ * @ordered
+ */
+ protected int lineWith = LINE_WITH_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LineInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LINE_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getLineColor() {
+ return lineColor;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLineColor(int newLineColor) {
+ int oldLineColor = lineColor;
+ lineColor = newLineColor;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LINE_INSTANCE__LINE_COLOR, oldLineColor, lineColor));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getLineWith() {
+ return lineWith;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLineWith(int newLineWith) {
+ int oldLineWith = lineWith;
+ lineWith = newLineWith;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LINE_INSTANCE__LINE_WITH, oldLineWith, lineWith));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+ return getLineColor();
+ case LayersPackage.LINE_INSTANCE__LINE_WITH:
+ return getLineWith();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+ setLineColor((Integer)newValue);
+ return;
+ case LayersPackage.LINE_INSTANCE__LINE_WITH:
+ setLineWith((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+ setLineColor(LINE_COLOR_EDEFAULT);
+ return;
+ case LayersPackage.LINE_INSTANCE__LINE_WITH:
+ setLineWith(LINE_WITH_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+ return lineColor != LINE_COLOR_EDEFAULT;
+ case LayersPackage.LINE_INSTANCE__LINE_WITH:
+ return lineWith != LINE_WITH_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromString(String value) {
+
+ if(value==null || value.length()==0) {
+ return;
+ }
+
+ // The value should contains the 2 values, separated by comma
+ // "lineColor, lineWith"
+ String[] values = value.split(",");
+ try {
+ setLineColor(Integer.parseInt(values[0].trim()));
+ setLineWith(Integer.parseInt(values[1].trim()));
+ } catch (NumberFormatException e) {
+ // fail silently
+ }
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromInstance(TypeInstance value) {
+
+ // Check if the value is of the right instance
+ if( ! getClass().isInstance(value) ) {
+ return;
+ }
+
+ LineInstance instance = (LineInstance)value;
+ setLineColor(instance.getLineColor());
+ setLineWith(instance.getLineWith());
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (lineColor: ");
+ result.append(lineColor);
+ result.append(", lineWith: ");
+ result.append(lineWith);
+ result.append(')');
+ return result.toString();
+ }
+
+} //LineInstanceImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LinePropertySetterImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LinePropertySetterImpl.java
new file mode 100644
index 00000000000..1977e3d0965
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LinePropertySetterImpl.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.Connector;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Line Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LinePropertySetterImpl extends PropertySetterImpl implements LinePropertySetter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected LinePropertySetterImpl() {
+ super();
+ setPropertyName("line");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LINE_PROPERTY_SETTER;
+ }
+
+ /**
+ * Set the property of the specified view.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+ *
+ * @param view
+ * @param value
+ */
+ @Override
+ public void setValue(View view, TypeInstance value) {
+
+
+ LineInstance lineValue = (LineInstance)value;
+
+ if(view instanceof Shape) {
+ Shape shape = (Shape)view;
+ shape.setLineColor(lineValue.getLineColor());
+ shape.setLineWidth(lineValue.getLineWith());
+ }
+ else if (view instanceof Connector) {
+ Connector shape = (Connector)view;
+ shape.setLineColor(lineValue.getLineColor());
+ shape.setLineWidth(lineValue.getLineWith());
+ }
+
+ }
+
+} //LinePropertySetterImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineTypeImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineTypeImpl.java
new file mode 100644
index 00000000000..36862728760
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineTypeImpl.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Line Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LineTypeImpl extends TypeImpl implements LineType {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected LineTypeImpl() {
+ super();
+ setName("LineType");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.LINE_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance createInstance() {
+ LineInstance instance = LayersFactory.eINSTANCE.createLineInstance();
+ return instance;
+ }
+
+
+} //LineTypeImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/MetamodelImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/MetamodelImpl.java
new file mode 100644
index 00000000000..8a6bb65c4d4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/MetamodelImpl.java
@@ -0,0 +1,473 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Metamodel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getNsuri <em>Nsuri</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getPluginID <em>Plugin ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getEPackageInstanceName <em>EPackage Instance Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#isTypeValid <em>Is Type Valid</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MetamodelImpl extends
+FolderElementImpl implements Metamodel {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNsuri() <em>Nsuri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNsuri()
+ * @generated
+ * @ordered
+ */
+ protected static final String NSURI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getNsuri() <em>Nsuri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNsuri()
+ * @generated
+ * @ordered
+ */
+ protected String nsuri = NSURI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPluginID() <em>Plugin ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPluginID()
+ * @generated
+ * @ordered
+ */
+ protected static final String PLUGIN_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPluginID() <em>Plugin ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPluginID()
+ * @generated
+ * @ordered
+ */
+ protected String pluginID = PLUGIN_ID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEPackageInstanceName() <em>EPackage Instance Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEPackageInstanceName()
+ * @generated
+ * @ordered
+ */
+ protected static final String EPACKAGE_INSTANCE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEPackageInstanceName() <em>EPackage Instance Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEPackageInstanceName()
+ * @generated
+ * @ordered
+ */
+ protected String ePackageInstanceName = EPACKAGE_INSTANCE_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isTypeValid() <em>Is Type Valid</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isTypeValid()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean IS_TYPE_VALID_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isTypeValid() <em>Is Type Valid</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isTypeValid()
+ * @generated
+ * @ordered
+ */
+ protected boolean isTypeValid = IS_TYPE_VALID_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MetamodelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.METAMODEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getNsuri() {
+ return nsuri;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNsuri(String newNsuri) {
+ String oldNsuri = nsuri;
+ nsuri = newNsuri;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__NSURI, oldNsuri, nsuri));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getPluginID() {
+ return pluginID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPluginID(String newPluginID) {
+ String oldPluginID = pluginID;
+ pluginID = newPluginID;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__PLUGIN_ID, oldPluginID, pluginID));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getEPackageInstanceName() {
+ return ePackageInstanceName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEPackageInstanceName(String newEPackageInstanceName) {
+ String oldEPackageInstanceName = ePackageInstanceName;
+ ePackageInstanceName = newEPackageInstanceName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME, oldEPackageInstanceName, ePackageInstanceName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isTypeValid() {
+ return isTypeValid;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIsTypeValid(boolean newIsTypeValid) {
+ boolean oldIsTypeValid = isTypeValid;
+ isTypeValid = newIsTypeValid;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__IS_TYPE_VALID, oldIsTypeValid, isTypeValid));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EPackage getEPackage() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.METAMODEL__NAME:
+ return getName();
+ case LayersPackage.METAMODEL__DESCRIPTION:
+ return getDescription();
+ case LayersPackage.METAMODEL__NSURI:
+ return getNsuri();
+ case LayersPackage.METAMODEL__PLUGIN_ID:
+ return getPluginID();
+ case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+ return getEPackageInstanceName();
+ case LayersPackage.METAMODEL__IS_TYPE_VALID:
+ return isTypeValid();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.METAMODEL__NAME:
+ setName((String)newValue);
+ return;
+ case LayersPackage.METAMODEL__DESCRIPTION:
+ setDescription((String)newValue);
+ return;
+ case LayersPackage.METAMODEL__NSURI:
+ setNsuri((String)newValue);
+ return;
+ case LayersPackage.METAMODEL__PLUGIN_ID:
+ setPluginID((String)newValue);
+ return;
+ case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+ setEPackageInstanceName((String)newValue);
+ return;
+ case LayersPackage.METAMODEL__IS_TYPE_VALID:
+ setIsTypeValid((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.METAMODEL__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case LayersPackage.METAMODEL__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case LayersPackage.METAMODEL__NSURI:
+ setNsuri(NSURI_EDEFAULT);
+ return;
+ case LayersPackage.METAMODEL__PLUGIN_ID:
+ setPluginID(PLUGIN_ID_EDEFAULT);
+ return;
+ case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+ setEPackageInstanceName(EPACKAGE_INSTANCE_NAME_EDEFAULT);
+ return;
+ case LayersPackage.METAMODEL__IS_TYPE_VALID:
+ setIsTypeValid(IS_TYPE_VALID_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.METAMODEL__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case LayersPackage.METAMODEL__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case LayersPackage.METAMODEL__NSURI:
+ return NSURI_EDEFAULT == null ? nsuri != null : !NSURI_EDEFAULT.equals(nsuri);
+ case LayersPackage.METAMODEL__PLUGIN_ID:
+ return PLUGIN_ID_EDEFAULT == null ? pluginID != null : !PLUGIN_ID_EDEFAULT.equals(pluginID);
+ case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+ return EPACKAGE_INSTANCE_NAME_EDEFAULT == null ? ePackageInstanceName != null : !EPACKAGE_INSTANCE_NAME_EDEFAULT.equals(ePackageInstanceName);
+ case LayersPackage.METAMODEL__IS_TYPE_VALID:
+ return isTypeValid != IS_TYPE_VALID_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.METAMODEL___GET_EPACKAGE:
+ return getEPackage();
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", description: ");
+ result.append(description);
+ result.append(", nsuri: ");
+ result.append(nsuri);
+ result.append(", pluginID: ");
+ result.append(pluginID);
+ result.append(", ePackageInstanceName: ");
+ result.append(ePackageInstanceName);
+ result.append(", isTypeValid: ");
+ result.append(isTypeValid);
+ result.append(')');
+ return result.toString();
+ }
+
+} //MetamodelImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullInstanceImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullInstanceImpl.java
new file mode 100644
index 00000000000..f0e5e904b0c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullInstanceImpl.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Null Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NullInstanceImpl extends TypeInstanceImpl implements NullInstance {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NullInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.NULL_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullInstance getInstance() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.NULL_INSTANCE___GET_INSTANCE:
+ return getInstance();
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} //NullInstanceImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullPropertySetterImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullPropertySetterImpl.java
new file mode 100644
index 00000000000..392d5934319
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullPropertySetterImpl.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Null Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NullPropertySetterImpl extends PropertySetterImpl implements NullPropertySetter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected NullPropertySetterImpl() {
+ super();
+ setPropertyName("NullPropertySetter");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.NULL_PROPERTY_SETTER;
+ }
+
+} //NullPropertySetterImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/OrStackedLayerOperatorDescriptorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/OrStackedLayerOperatorDescriptorImpl.java
new file mode 100644
index 00000000000..22c4cce8737
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/OrStackedLayerOperatorDescriptorImpl.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Or Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class OrStackedLayerOperatorDescriptorImpl extends StackedLayerOperatorDescriptorImpl implements OrStackedLayerOperatorDescriptor {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected OrStackedLayerOperatorDescriptorImpl() {
+ super();
+ setName("OrStackedLayerOperator");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.OR_STACKED_LAYER_OPERATOR_DESCRIPTOR;
+ }
+
+} //OrStackedLayerOperatorDescriptorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyImpl.java
new file mode 100644
index 00000000000..2b0ee6c5691
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyImpl.java
@@ -0,0 +1,465 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getDefaultValue <em>Default Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getIndex <em>Index</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyImpl extends
+FolderElementImpl implements Property {
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected Type type;
+
+ /**
+ * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultValue()
+ * @generated
+ * @ordered
+ */
+ protected TypeInstance defaultValue;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getIndex() <em>Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIndex()
+ * @generated
+ * @ordered
+ */
+ protected static final int INDEX_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getIndex() <em>Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIndex()
+ * @generated
+ * @ordered
+ */
+ protected int index = INDEX_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.PROPERTY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType() {
+ if (type != null && type.eIsProxy()) {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (Type)eResolveProxy(oldType);
+ if (type != oldType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.PROPERTY__TYPE, oldType, type));
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type basicGetType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(Type newType) {
+ Type oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeInstance getDefaultValue() {
+ return defaultValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDefaultValue(TypeInstance newDefaultValue, NotificationChain msgs) {
+ TypeInstance oldDefaultValue = defaultValue;
+ defaultValue = newDefaultValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__DEFAULT_VALUE, oldDefaultValue, newDefaultValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDefaultValue(TypeInstance newDefaultValue) {
+ if (newDefaultValue != defaultValue) {
+ NotificationChain msgs = null;
+ if (defaultValue != null)
+ msgs = ((InternalEObject)defaultValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.PROPERTY__DEFAULT_VALUE, null, msgs);
+ if (newDefaultValue != null)
+ msgs = ((InternalEObject)newDefaultValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.PROPERTY__DEFAULT_VALUE, null, msgs);
+ msgs = basicSetDefaultValue(newDefaultValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__DEFAULT_VALUE, newDefaultValue, newDefaultValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getIndex() {
+ return index;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIndex(int newIndex) {
+ int oldIndex = index;
+ index = newIndex;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__INDEX, oldIndex, index));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @throws BadStateException
+ * @generated NOT
+ */
+ public TypeInstance createInstance() throws BadStateException {
+
+ if(type == null) {
+ throw new BadStateException("Property '" + getName() + "', type must be set to create an instance");
+ }
+
+ // Create an instance
+ TypeInstance instance = type.createInstance();
+ // Set the default value if needed
+ if( getDefaultValue() != null) {
+ instance.setValueFromInstance(getDefaultValue());
+ }
+
+ return instance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY__DEFAULT_VALUE:
+ return basicSetDefaultValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY__TYPE:
+ if (resolve) return getType();
+ return basicGetType();
+ case LayersPackage.PROPERTY__DEFAULT_VALUE:
+ return getDefaultValue();
+ case LayersPackage.PROPERTY__NAME:
+ return getName();
+ case LayersPackage.PROPERTY__DESCRIPTION:
+ return getDescription();
+ case LayersPackage.PROPERTY__INDEX:
+ return getIndex();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY__TYPE:
+ setType((Type)newValue);
+ return;
+ case LayersPackage.PROPERTY__DEFAULT_VALUE:
+ setDefaultValue((TypeInstance)newValue);
+ return;
+ case LayersPackage.PROPERTY__NAME:
+ setName((String)newValue);
+ return;
+ case LayersPackage.PROPERTY__DESCRIPTION:
+ setDescription((String)newValue);
+ return;
+ case LayersPackage.PROPERTY__INDEX:
+ setIndex((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY__TYPE:
+ setType((Type)null);
+ return;
+ case LayersPackage.PROPERTY__DEFAULT_VALUE:
+ setDefaultValue((TypeInstance)null);
+ return;
+ case LayersPackage.PROPERTY__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case LayersPackage.PROPERTY__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case LayersPackage.PROPERTY__INDEX:
+ setIndex(INDEX_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY__TYPE:
+ return type != null;
+ case LayersPackage.PROPERTY__DEFAULT_VALUE:
+ return defaultValue != null;
+ case LayersPackage.PROPERTY__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case LayersPackage.PROPERTY__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case LayersPackage.PROPERTY__INDEX:
+ return index != INDEX_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.PROPERTY___CREATE_INSTANCE:
+ try {
+ return createInstance();
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", description: ");
+ result.append(description);
+ result.append(", index: ");
+ result.append(index);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PropertyImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyIndexImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyIndexImpl.java
new file mode 100644
index 00000000000..ec0fa26c315
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyIndexImpl.java
@@ -0,0 +1,235 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Index</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl#getIndex <em>Index</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyIndexImpl extends MinimalEObjectImpl.Container implements PropertyIndex {
+ /**
+ * The cached value of the '{@link #getProperty() <em>Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProperty()
+ * @generated
+ * @ordered
+ */
+ protected Property property;
+
+ /**
+ * The default value of the '{@link #getIndex() <em>Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIndex()
+ * @generated
+ * @ordered
+ */
+ protected static final int INDEX_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getIndex() <em>Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIndex()
+ * @generated
+ * @ordered
+ */
+ protected int index = INDEX_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyIndexImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.PROPERTY_INDEX;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getProperty() {
+ if (property != null && property.eIsProxy()) {
+ InternalEObject oldProperty = (InternalEObject)property;
+ property = (Property)eResolveProxy(oldProperty);
+ if (property != oldProperty) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.PROPERTY_INDEX__PROPERTY, oldProperty, property));
+ }
+ }
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetProperty() {
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProperty(Property newProperty) {
+ Property oldProperty = property;
+ property = newProperty;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_INDEX__PROPERTY, oldProperty, property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getIndex() {
+ return index;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIndex(int newIndex) {
+ int oldIndex = index;
+ index = newIndex;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_INDEX__INDEX, oldIndex, index));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_INDEX__PROPERTY:
+ if (resolve) return getProperty();
+ return basicGetProperty();
+ case LayersPackage.PROPERTY_INDEX__INDEX:
+ return getIndex();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_INDEX__PROPERTY:
+ setProperty((Property)newValue);
+ return;
+ case LayersPackage.PROPERTY_INDEX__INDEX:
+ setIndex((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_INDEX__PROPERTY:
+ setProperty((Property)null);
+ return;
+ case LayersPackage.PROPERTY_INDEX__INDEX:
+ setIndex(INDEX_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_INDEX__PROPERTY:
+ return property != null;
+ case LayersPackage.PROPERTY_INDEX__INDEX:
+ return index != INDEX_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (index: ");
+ result.append(index);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PropertyIndexImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyOperatorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyOperatorImpl.java
new file mode 100644
index 00000000000..db85c4155ec
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyOperatorImpl.java
@@ -0,0 +1,212 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyOperatorImpl extends MinimalEObjectImpl.Container implements PropertyOperator {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.PROPERTY_OPERATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_OPERATOR__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_OPERATOR__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_OPERATOR__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_OPERATOR__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_OPERATOR__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST:
+ try {
+ return getComputePropertyValueCommand((EList<ComputePropertyValueCommand>)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PropertyOperatorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImpl.java
new file mode 100644
index 00000000000..e3934d75738
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImpl.java
@@ -0,0 +1,387 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getProperties <em>Properties</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getTypeRegistry <em>Type Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getPropertiesCount <em>Properties Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyRegistryImpl extends MinimalEObjectImpl.Container implements PropertyRegistry {
+ /**
+ * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProperties()
+ * @generated
+ * @ordered
+ */
+ protected EList<Property> properties;
+
+ /**
+ * The cached value of the '{@link #getTypeRegistry() <em>Type Registry</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypeRegistry()
+ * @generated
+ * @ordered
+ */
+ protected TypeRegistry typeRegistry;
+
+ /**
+ * The default value of the '{@link #getPropertiesCount() <em>Properties Count</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertiesCount()
+ * @generated
+ * @ordered
+ */
+ protected static final int PROPERTIES_COUNT_EDEFAULT = 0;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOt
+ */
+ protected PropertyRegistryImpl() {
+ super();
+ // initialie transient ref
+ init();
+ }
+
+ /**
+ * Init the transient references
+ * Create the internal objects : TypeRegistry.
+ */
+ protected void init() {
+ // Create the TypeRegistry
+ TypeRegistry typeRegistry = LayersFactory.eINSTANCE.createTypeRegistry();
+ setTypeRegistry(typeRegistry);
+
+ // Initialize the list of properties
+ // Properties to add
+ // name, type, defaultvalues
+ // colors: black=0 , fushia=15053796,
+ String[] properties = new String[] {
+// "name", "String",
+// "age", "int",
+// "num", "int",
+// "addr", "String",
+// "isValid", "boolean", "true",
+ "isVisible", "boolean","true",
+ "isAbstract", "boolean", "false",
+ "fill", "Fill", "0, 15053796", //"transparency, fillColor"
+ "line", "LineType", "0, -1", // "lineColor, lineWith"
+ "font", "FontType", "Segoe UI, 9, 0, false", // "FontName, FontHeight, FontColor, Bold"
+// "bgcolor", "Color",
+// "fgcolor", "Color",
+ };
+
+ for( int i=0;i<properties.length; i+=3) {
+ Property property = LayersFactory.eINSTANCE.createProperty();
+ property.setName(properties[i]);
+ Type propertyType = typeRegistry.getTypes().get(properties[i+1]);
+ property.setType(propertyType);
+ // Create Default value
+ String defaultValueStr = properties[i+2];
+ if( defaultValueStr != null && defaultValueStr.length()>0) {
+ TypeInstance defaultValue = propertyType.createInstance();
+ defaultValue.setValueFromString(defaultValueStr);
+ property.setDefaultValue(defaultValue);
+ }
+
+ addProperty(property);
+// getProperties().add(property);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.PROPERTY_REGISTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Property> getProperties() {
+ if (properties == null) {
+ properties = new EObjectContainmentEList<Property>(Property.class, this, LayersPackage.PROPERTY_REGISTRY__PROPERTIES);
+ }
+ return properties;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeRegistry getTypeRegistry() {
+ return typeRegistry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypeRegistry(TypeRegistry newTypeRegistry, NotificationChain msgs) {
+ TypeRegistry oldTypeRegistry = typeRegistry;
+ typeRegistry = newTypeRegistry;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY, oldTypeRegistry, newTypeRegistry);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypeRegistry(TypeRegistry newTypeRegistry) {
+ if (newTypeRegistry != typeRegistry) {
+ NotificationChain msgs = null;
+ if (typeRegistry != null)
+ msgs = ((InternalEObject)typeRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY, null, msgs);
+ if (newTypeRegistry != null)
+ msgs = ((InternalEObject)newTypeRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY, null, msgs);
+ msgs = basicSetTypeRegistry(newTypeRegistry, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY, newTypeRegistry, newTypeRegistry));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public int getPropertiesCount() {
+ return getProperties().size();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public int getPropertyIndex(String propertyName) throws NotFoundException {
+
+ if(propertyName == null) {
+ throw new NotFoundException("Null not Allowed");
+ }
+ List<Property> props = getProperties();
+ for( int i=0; i<props.size(); i++) {
+ if( propertyName.equals(props.get(i).getName() ) ) {
+ return i;
+ }
+ }
+
+ // Not found
+ throw new NotFoundException("No property found with name '" + propertyName + "'");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getProperty(String propertyName) throws NotFoundException {
+
+ int index = getPropertyIndex(propertyName);
+ return getProperties().get(index);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addProperty(Property property) {
+
+ // Check if the property already exist
+ try {
+ getProperty(property.getName());
+ // Already exist ==> return
+ return;
+ } catch (NotFoundException e) {
+ // ok
+ }
+
+ // set the index
+ property.setIndex(getProperties().size());
+ // Add the property
+ getProperties().add(property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+ return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+ case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+ return basicSetTypeRegistry(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+ return getProperties();
+ case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+ return getTypeRegistry();
+ case LayersPackage.PROPERTY_REGISTRY__PROPERTIES_COUNT:
+ return getPropertiesCount();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+ getProperties().clear();
+ getProperties().addAll((Collection<? extends Property>)newValue);
+ return;
+ case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+ setTypeRegistry((TypeRegistry)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+ getProperties().clear();
+ return;
+ case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+ setTypeRegistry((TypeRegistry)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+ return properties != null && !properties.isEmpty();
+ case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+ return typeRegistry != null;
+ case LayersPackage.PROPERTY_REGISTRY__PROPERTIES_COUNT:
+ return getPropertiesCount() != PROPERTIES_COUNT_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.PROPERTY_REGISTRY___GET_PROPERTY_INDEX__STRING:
+ try {
+ return getPropertyIndex((String)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.PROPERTY_REGISTRY___GET_PROPERTY__STRING:
+ try {
+ return getProperty((String)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.PROPERTY_REGISTRY___ADD_PROPERTY__PROPERTY:
+ addProperty((Property)arguments.get(0));
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} //PropertyRegistryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterImpl.java
new file mode 100644
index 00000000000..f1e86b373f2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterImpl.java
@@ -0,0 +1,267 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.gmf.runtime.notation.View;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#getPropertyName <em>Property Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class PropertySetterImpl extends MinimalEObjectImpl.Container implements PropertySetter {
+ /**
+ * The cached value of the '{@link #getProperty() <em>Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProperty()
+ * @generated
+ * @ordered
+ */
+ protected Property property;
+
+ /**
+ * The default value of the '{@link #getPropertyName() <em>Property Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyName()
+ * @generated
+ * @ordered
+ */
+ protected static final String PROPERTY_NAME_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getPropertyName() <em>Property Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertyName()
+ * @generated
+ * @ordered
+ */
+ protected String propertyName = PROPERTY_NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertySetterImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.PROPERTY_SETTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getProperty() {
+ if (property != null && property.eIsProxy()) {
+ InternalEObject oldProperty = (InternalEObject)property;
+ property = (Property)eResolveProxy(oldProperty);
+ if (property != oldProperty) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.PROPERTY_SETTER__PROPERTY, oldProperty, property));
+ }
+ }
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetProperty() {
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProperty(Property newProperty) {
+ Property oldProperty = property;
+ property = newProperty;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_SETTER__PROPERTY, oldProperty, property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getPropertyName() {
+ return propertyName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPropertyName(String newPropertyName) {
+ String oldPropertyName = propertyName;
+ propertyName = newPropertyName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_SETTER__PROPERTY_NAME, oldPropertyName, propertyName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(View view, TypeInstance value) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER__PROPERTY:
+ if (resolve) return getProperty();
+ return basicGetProperty();
+ case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+ return getPropertyName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER__PROPERTY:
+ setProperty((Property)newValue);
+ return;
+ case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+ setPropertyName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER__PROPERTY:
+ setProperty((Property)null);
+ return;
+ case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+ setPropertyName(PROPERTY_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER__PROPERTY:
+ return property != null;
+ case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+ return PROPERTY_NAME_EDEFAULT == null ? propertyName != null : !PROPERTY_NAME_EDEFAULT.equals(propertyName);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE:
+ setValue((View)arguments.get(0), (TypeInstance)arguments.get(1));
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (propertyName: ");
+ result.append(propertyName);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PropertySetterImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImpl.java
new file mode 100644
index 00000000000..ba758d8f533
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImpl.java
@@ -0,0 +1,384 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Setter Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getPropertySetters <em>Property Setters</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getSetterMap <em>Setter Map</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertySetterRegistryImpl extends MinimalEObjectImpl.Container implements PropertySetterRegistry {
+ /**
+ * The cached value of the '{@link #getPropertySetters() <em>Property Setters</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPropertySetters()
+ * @generated
+ * @ordered
+ */
+ protected EList<PropertySetter> propertySetters;
+
+ /**
+ * The cached value of the '{@link #getSetterMap() <em>Setter Map</em>}' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSetterMap()
+ * @generated
+ * @ordered
+ */
+ protected EMap<String, PropertySetter> setterMap;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected PropertySetterRegistryImpl() {
+ super();
+ init();
+ }
+
+ /**
+ * Initialize the registry with some setters
+ */
+ protected void init() {
+
+ addPropertySetter(LayersFactory.eINSTANCE.createFillPropertySetter());
+ addPropertySetter(LayersFactory.eINSTANCE.createIsValidPropertySetter());
+ addPropertySetter(LayersFactory.eINSTANCE.createLinePropertySetter());
+ addPropertySetter(LayersFactory.eINSTANCE.createFontPropertySetter());
+ addPropertySetter(LayersFactory.eINSTANCE.createIsVisiblePropertySetter());
+ addPropertySetter(LayersFactory.eINSTANCE.createIsAbstractUmlSetter());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.PROPERTY_SETTER_REGISTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<PropertySetter> getPropertySetters() {
+// if (propertySetters == null) {
+// propertySetters = new EObjectResolvingEList<PropertySetter>(PropertySetter.class, this, LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS);
+// }
+ if (propertySetters == null) {
+ propertySetters = new PropertyIndexedList<PropertySetter>(getSetterMap(), PropertySetter.class, this, LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS, LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP, PropertySetter.NULL_PROPERTY_SETTER);
+ }
+ return propertySetters;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<String, PropertySetter> getSetterMap() {
+ if (setterMap == null) {
+ setterMap = new EcoreEMap<String,PropertySetter>(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER, StringToPropertySetterImpl.class, this, LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP);
+ }
+ return setterMap;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersStackApplication getApplication() {
+ if (eContainerFeatureID() != LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION) return null;
+ return (LayersStackApplication)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetApplication(LayersStackApplication newApplication, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newApplication, LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setApplication(LayersStackApplication newApplication) {
+ if (newApplication != eInternalContainer() || (eContainerFeatureID() != LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION && newApplication != null)) {
+ if (EcoreUtil.isAncestor(this, newApplication))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newApplication != null)
+ msgs = ((InternalEObject)newApplication).eInverseAdd(this, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, LayersStackApplication.class, msgs);
+ msgs = basicSetApplication(newApplication, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION, newApplication, newApplication));
+
+
+ // update the list of PropertySetters
+ if( newApplication != null) {
+ List<Property> list = newApplication.getPropertyRegistry().getProperties();
+ ((PropertyIndexedList<PropertySetter>)getPropertySetters()).setPropertyList(list);
+ };
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public PropertySetter getPropertySetter(Property property) throws NotFoundException {
+
+ try {
+ return getPropertySetters().get(property.getIndex());
+ }
+ catch( IndexOutOfBoundsException e) {
+ // Try by name
+ PropertySetter setter = getPropertySetter(property.getName());
+ if(setter != null) {
+ return setter;
+ }
+ throw new NotFoundException("No setter found for property '" + property.getName() + "'");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public PropertySetter getPropertySetter(String property) throws NotFoundException {
+ return getSetterMap().get(property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addPropertySetter(PropertySetter setter) {
+
+ String key = setter.getPropertyName();
+ if( key == null || key.length() == 0) {
+ throw new UnsupportedOperationException("Setter must have a valid name.");
+ }
+
+ getSetterMap().put(key, setter);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetApplication((LayersStackApplication)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+ return ((InternalEList<?>)getSetterMap()).basicRemove(otherEnd, msgs);
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+ return basicSetApplication(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+ return eInternalContainer().eInverseRemove(this, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, LayersStackApplication.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+ return getPropertySetters();
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+ if (coreType) return getSetterMap();
+ else return getSetterMap().map();
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+ return getApplication();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+ getPropertySetters().clear();
+ getPropertySetters().addAll((Collection<? extends PropertySetter>)newValue);
+ return;
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+ ((EStructuralFeature.Setting)getSetterMap()).set(newValue);
+ return;
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+ setApplication((LayersStackApplication)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+ getPropertySetters().clear();
+ return;
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+ getSetterMap().clear();
+ return;
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+ setApplication((LayersStackApplication)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+ return propertySetters != null && !propertySetters.isEmpty();
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+ return setterMap != null && !setterMap.isEmpty();
+ case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+ return getApplication() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__PROPERTY:
+ try {
+ return getPropertySetter((Property)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__STRING:
+ try {
+ return getPropertySetter((String)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.PROPERTY_SETTER_REGISTRY___ADD_PROPERTY_SETTER__PROPERTYSETTER:
+ addPropertySetter((PropertySetter)arguments.get(0));
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} //PropertySetterRegistryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerDescriptorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerDescriptorImpl.java
new file mode 100644
index 00000000000..f7fd5cca3e7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerDescriptorImpl.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reg Exp Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class RegExpLayerDescriptorImpl extends LayerDescriptorImpl implements RegExpLayerDescriptor {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RegExpLayerDescriptorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.REG_EXP_LAYER_DESCRIPTOR;
+ }
+
+} //RegExpLayerDescriptorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java
new file mode 100644
index 00000000000..5a85e033e9d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java
@@ -0,0 +1,1037 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.query.conditions.eobjects.EObjectCondition;
+import org.eclipse.emf.query.statements.FROM;
+import org.eclipse.emf.query.statements.IQueryResult;
+import org.eclipse.emf.query.statements.SELECT;
+import org.eclipse.emf.query.statements.WHERE;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.ocl.ecore.OCL;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.EventLevel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener;
+import org.eclipse.papyrus.layers.stackmodel.util.ObservableListView;
+
+import com.google.common.eventbus.Subscribe;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reg Exp Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getExpr <em>Expr</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getLanguage <em>Language</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#isDomainChangedEventDependant <em>Is Domain Changed Event Dependant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getDomainChangedEventLevel <em>Domain Changed Event Level</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#isDiagramChangedEventDependant <em>Is Diagram Changed Event Dependant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getDiagramChangedEventLevel <em>Diagram Changed Event Level</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getExpressionContextObjectType <em>Expression Context Object Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RegExpLayerImpl extends AbstractLayerImpl implements RegExpLayer {
+ /**
+ * The default value of the '{@link #getExpr() <em>Expr</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpr()
+ * @generated
+ * @ordered
+ */
+ protected static final String EXPR_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getExpr() <em>Expr</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpr()
+ * @generated
+ * @ordered
+ */
+ protected String expr = EXPR_EDEFAULT;
+ /**
+ * The default value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLanguage()
+ * @generated
+ * @ordered
+ */
+ protected static final String LANGUAGE_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLanguage()
+ * @generated
+ * @ordered
+ */
+ protected String language = LANGUAGE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isDomainChangedEventDependant() <em>Is Domain Changed Event Dependant</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isDomainChangedEventDependant()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean IS_DOMAIN_CHANGED_EVENT_DEPENDANT_EDEFAULT = false;
+ /**
+ * The cached value of the '{@link #isDomainChangedEventDependant() <em>Is Domain Changed Event Dependant</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isDomainChangedEventDependant()
+ * @generated
+ * @ordered
+ */
+ protected boolean isDomainChangedEventDependant = IS_DOMAIN_CHANGED_EVENT_DEPENDANT_EDEFAULT;
+ /**
+ * The default value of the '{@link #getDomainChangedEventLevel() <em>Domain Changed Event Level</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDomainChangedEventLevel()
+ * @generated
+ * @ordered
+ */
+ protected static final EventLevel DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT = EventLevel.LEVEL1;
+ /**
+ * The cached value of the '{@link #getDomainChangedEventLevel() <em>Domain Changed Event Level</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDomainChangedEventLevel()
+ * @generated
+ * @ordered
+ */
+ protected EventLevel domainChangedEventLevel = DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT;
+ /**
+ * The default value of the '{@link #isDiagramChangedEventDependant() <em>Is Diagram Changed Event Dependant</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isDiagramChangedEventDependant()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean IS_DIAGRAM_CHANGED_EVENT_DEPENDANT_EDEFAULT = false;
+ /**
+ * The cached value of the '{@link #isDiagramChangedEventDependant() <em>Is Diagram Changed Event Dependant</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isDiagramChangedEventDependant()
+ * @generated
+ * @ordered
+ */
+ protected boolean isDiagramChangedEventDependant = IS_DIAGRAM_CHANGED_EVENT_DEPENDANT_EDEFAULT;
+ /**
+ * The default value of the '{@link #getDiagramChangedEventLevel() <em>Diagram Changed Event Level</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiagramChangedEventLevel()
+ * @generated
+ * @ordered
+ */
+ protected static final EventLevel DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT = EventLevel.LEVEL1;
+ /**
+ * The cached value of the '{@link #getDiagramChangedEventLevel() <em>Diagram Changed Event Level</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiagramChangedEventLevel()
+ * @generated
+ * @ordered
+ */
+ protected EventLevel diagramChangedEventLevel = DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT;
+ /**
+ * The default value of the '{@link #getExpressionContextObjectType() <em>Expression Context Object Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpressionContextObjectType()
+ * @generated
+ * @ordered
+ */
+ protected static final String EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT = null;
+ /**
+ * The cached value of the '{@link #getExpressionContextObjectType() <em>Expression Context Object Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExpressionContextObjectType()
+ * @generated
+ * @ordered
+ */
+ protected String expressionContextObjectType = EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT;
+
+ protected DiagramViewEventNotifier diagramViewEventNotifier;
+
+ /**
+ * Expression matcher computing the expr, and firing events when the matching elements change.
+ */
+ protected ExpressionMatcher expressionMatcher;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected RegExpLayerImpl() {
+ super();
+
+ // Initialize expressionmatcher
+ // The expression Macher use this class views list.
+ // When expressionMatcher::refreshMatchingElements() is called, the provided list is refreshed.
+ // So, views is synchronized and events are fired.
+ expressionMatcher = new ExpressionMatcher(getViews());
+ resetExpressionMatcherRoots();
+
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#startBehaviors()
+ *
+ */
+ @Override
+ protected void startBehaviors() {
+ // TODO Auto-generated method stub
+ super.startBehaviors();
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#startAfterReloading()
+ *
+ */
+ @Override
+ public void startAfterReloading() {
+ // TODO Auto-generated method stub
+ super.startAfterReloading();
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+ *
+ * @param owningLayersStack
+ */
+ @Override
+ public void attachToLayersStack(LayersStack owningLayersStack) {
+ // TODO Auto-generated method stub
+ super.attachToLayersStack(owningLayersStack);
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.REG_EXP_LAYER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getExpr() {
+ return expr;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setExpr(String newExpr) {
+ String oldExpr = expr;
+ expr = newExpr;
+ // Try to set the expression
+ try {
+ // Check synchro between RegExp::views and ExpressionMatcher::matchingElements
+ // they can be unsync after the model was loaded by EMF
+ checkViewsAndMatchingElementsSync();
+ // First, reset expr roots. Do it because actually the roots are not properly set.
+ resetExpressionMatcherRoots();
+ // Change the expression, and recompute the matching elements.
+ expressionMatcher.setExpression(newExpr);
+ expressionMatcher.refreshMatchingElements();
+ } catch (LayersException e) {
+ // silently fails, but log the error.
+ System.err.println( "Error - " + this.getClass().getSimpleName() + " - " + e.getMessage());
+ }
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__EXPR, oldExpr, expr));
+ }
+
+ /**
+ * Check synchro between RegExp::views and ExpressionMatcher::matchingElements
+ * they can be unsync after the model was loaded by EMF.
+ * <b>
+ * This method is used to correct the bug where both list are unsync after the model was loaded by EMF.
+ * @Deprecated Not needed anymore
+ */
+ private void checkViewsAndMatchingElementsSync() {
+
+// // Check if both list have the same size.
+// // We don't to check the content, because we want a quick check
+// // Actually, unsync appear only after the model was reloded by EMF.
+// if( getViews().size() == expressionMatcher.getMatchingElements().size() ) {
+// // ok
+// return;
+// }
+//
+// // Sync is required
+// List<View> matchElements = expressionMatcher.getMatchingElements().getUnnotifyingList();
+// matchElements.clear();
+// matchElements.addAll(getViews());
+
+ }
+
+ /**
+ * OCL Condition computed from the expr.
+ */
+ protected EObjectCondition condition;
+ protected OCL ocl;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLanguage() {
+ return language;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLanguage(String newLanguage) {
+ String oldLanguage = language;
+ language = newLanguage;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__LANGUAGE, oldLanguage, language));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isDomainChangedEventDependant() {
+ return isDomainChangedEventDependant;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIsDomainChangedEventDependant(boolean newIsDomainChangedEventDependant) {
+ boolean oldIsDomainChangedEventDependant = isDomainChangedEventDependant;
+ isDomainChangedEventDependant = newIsDomainChangedEventDependant;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT, oldIsDomainChangedEventDependant, isDomainChangedEventDependant));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EventLevel getDomainChangedEventLevel() {
+ return domainChangedEventLevel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDomainChangedEventLevel(EventLevel newDomainChangedEventLevel) {
+ EventLevel oldDomainChangedEventLevel = domainChangedEventLevel;
+ domainChangedEventLevel = newDomainChangedEventLevel == null ? DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT : newDomainChangedEventLevel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL, oldDomainChangedEventLevel, domainChangedEventLevel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isDiagramChangedEventDependant() {
+ return isDiagramChangedEventDependant;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIsDiagramChangedEventDependant(boolean newIsDiagramChangedEventDependant) {
+ boolean oldIsDiagramChangedEventDependant = isDiagramChangedEventDependant;
+ isDiagramChangedEventDependant = newIsDiagramChangedEventDependant;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT, oldIsDiagramChangedEventDependant, isDiagramChangedEventDependant));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EventLevel getDiagramChangedEventLevel() {
+ return diagramChangedEventLevel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDiagramChangedEventLevel(EventLevel newDiagramChangedEventLevel) {
+ EventLevel oldDiagramChangedEventLevel = diagramChangedEventLevel;
+ diagramChangedEventLevel = newDiagramChangedEventLevel == null ? DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT : newDiagramChangedEventLevel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL, oldDiagramChangedEventLevel, diagramChangedEventLevel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getExpressionContextObjectType() {
+ return expressionContextObjectType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExpressionContextObjectType(String newExpressionContextObjectType) {
+ String oldExpressionContextObjectType = expressionContextObjectType;
+ expressionContextObjectType = newExpressionContextObjectType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE, oldExpressionContextObjectType, expressionContextObjectType));
+ }
+
+ /**
+ * Listener on {@link ObservableListView} eventBus. This method is called each time a change occurs in the
+ * result of the expression.
+ * When the result change, the list of attached views is updated accordingly.
+ *
+ *
+ * @param event
+ */
+ @Subscribe
+ public void expressionResultChanged( ObservableListView<View>.ObservableListEvent event) {
+
+ System.out.println( this.getClass().getSimpleName() + ".expressionResultChanged()");
+ if( ! event.getAddedElements().isEmpty()) {
+ getViews().addAll(event.getAddedElements());
+ }
+ if( ! event.getRemovedElements().isEmpty()) {
+ getViews().removeAll(event.getRemovedElements());
+ }
+
+ }
+
+ /**
+ * This layer has just been added to a LayerStack.
+ * Set the root of the expression.
+ * Set the views to match the result of the expression.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#initLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+ *
+ * @param owningLayersStack
+ */
+ @Override
+ public void initLayer(LayersStack owningLayersStack) {
+ super.initLayer(owningLayersStack);
+
+ resetExpressionMatcherRoots();
+ checkViewsAndMatchingElementsSync();
+
+// // Synchronize the layer views with the result of expressionMatcher.
+// // Try to minimize the number of events.
+// // For that, freeze temporarily the events from this layer
+// // Refresh the result and reset the views list while events are disabled.
+// boolean isDeliveringEvents = eDeliver();
+// eSetDeliver(false);
+//
+// expressionMatcher.refreshMatchingElements();
+// List<View> toAdd = expressionMatcher.getMatchingElements();
+// if( !toAdd.isEmpty() ) {
+// getViews().clear();
+// }
+//
+// // Reenable events
+// eSetDeliver(true);
+//
+// // Set the views
+//
+// if( !toAdd.isEmpty() ) {
+// getViews().addAll(expressionMatcher.getMatchingElements());
+// }
+// else {
+// // If there is nothing to add, clear the list, in order to send appropriate event.
+// getViews().clear();
+// }
+
+
+ }
+
+ /**
+ * Check if the associated Diagram has changed, and if true, change it in the ExpressionMatcher.
+ * This does not compute the result.
+ */
+ private void resetExpressionMatcherRoots() {
+
+ try {
+ expressionMatcher.setSearchRoots( getLayersStack().getDiagram() );
+ } catch (NotFoundException e) {
+ // layerStack not found ==> no roots
+ expressionMatcher.setSearchRoots( (List<EObject>)Collections.EMPTY_LIST);
+ }
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param newLayerParent
+ * @generated NOT
+ * @deprecated not used
+ */
+ public void activate(AbstractLayerOperator newLayerParent) {
+
+// LayersStack layersStack;
+// try {
+// layersStack = newLayerParent.getLayersStack();
+// } catch (NotFoundException e) {
+// // silently fails
+// return;
+// }
+//
+// // Listen on view events
+// if(diagramViewEventNotifier == null) {
+// diagramViewEventNotifier = new DiagramViewEventNotifier(layersStack.getDiagram());
+// return;
+// }
+
+// diagramViewEventNotifier.
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param oldParentLayer
+ * @generated NOT
+ * @deprecated
+ */
+ public void deactivate(AbstractLayerOperator oldParentLayer) {
+
+// if( oldParentLayer == null) {
+// return;
+// }
+//
+// LayersStack layersStack;
+// try {
+// layersStack = oldParentLayer.getLayersStack();
+// } catch (NotFoundException e) {
+// // silently fails
+// return;
+// }
+//
+// layersStack.getDiagram();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isDerivedView(View view) throws LayersException {
+
+ if(condition == null) {
+ return false;
+ }
+
+ // Create the OCL statement
+ SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+ new FROM(view), new WHERE(condition),
+ new NullProgressMonitor());
+
+ // Execute the OCL statement
+ IQueryResult results = statement.execute();
+
+ // the view is derived if the condition match the view.
+ return !results.isEmpty();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Check if the view satisfy the expr condition.
+ * If the condition is satisfied, ensure that the view is attached.
+ * If the condition is not satisfied, ensure that the view is not attached.
+ *
+ *
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void attachDerivedView(View view) throws LayersException {
+ // TODO: implement this method
+ if(condition == null) {
+ return;
+ }
+
+ // Create the OCL statement
+ SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+ new FROM(view), new WHERE(condition),
+ new NullProgressMonitor());
+
+ // Execute the OCL statement
+ IQueryResult results = statement.execute();
+
+ //
+ if( ! results.isEmpty()) {
+ // The condition is satisfied. Ensure the view is attached
+ List<View> attachedViews = getViews();
+ if (attachedViews.contains(view)) {
+ return;
+ }
+ attachedViews.add(view);
+ }
+ else {
+ // The condition is not satisfied. Ensure the view is not attached.
+ getViews().remove(view);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Attach each view that satisfy the condition.
+ * Detach each view that do not satisfy the condition.
+ * TODO rename to updateDerivedViews() ?
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void attachDerivedViews(EList<View> views) throws LayersException {
+
+ if(condition == null) {
+ return;
+ }
+
+ // Create the OCL statement
+ SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+ new FROM(views), new WHERE(condition),
+ new NullProgressMonitor());
+
+ // Execute the OCL statement
+ IQueryResult results = statement.execute();
+
+ // viewsToCheck
+ // attachedViews -- list of views that are attached
+ // -- getViews()
+ // viewsToAttach -- list of views that should be attached
+ // -- query result
+ // toAdd - views that are in viewsToAttach, but not in attachedViews
+ // --
+ // toRemove - views that are in attachedViews, and viewsToCheck, but not in viewsToAttach
+
+ // Compute views to add
+ // This are views in the result, but not in the list of attached
+ // viewsToAdd = results - getViews()
+ List<View> viewsToAdd = new ArrayList<View>();
+ List<View> attachedViews = getViews();
+ for( Object o : results ) {
+ View v = (View)o;
+ if( !attachedViews.contains(v)) {
+ viewsToAdd.add(v);
+ }
+ }
+
+ // Compute views to remove
+ // Their is two ways to compute it:
+ // - viewsToremove = diagramViews - results
+ // - or viewsToremove = getViews() - result
+ // Use the cheaper one.
+ // The computed viewsToRemove list contains also views that are not in the layer,
+ // But this is cheaper than checking for the existence.
+
+ List<View> viewsToRemove = new ArrayList<View>();
+ for( View v : (views.size()<getViews().size()?views:getViews()) ) {
+ if( !results.contains(v)) {
+ viewsToRemove.add(v);
+ }
+ }
+
+ // Do operations
+ getViews().removeAll(viewsToRemove);
+ getViews().addAll(viewsToAdd);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Update all views directly own by the diagram.
+ *
+ * If a view satisfy the expr condition, attach it to the Layer.
+ * Remove all others view from the layer.
+ * <br>
+ * To avoid multiple events, we compute the list of views to remove from the layer, and the list
+ * of views to add to layer. Then, we preform two operations; removeAll(toRemove) and addAll(toAdd);
+ *
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void attachDerivedViews() throws LayersException {
+
+ if(condition == null) {
+ return;
+ }
+
+ // Check views from the diagram.
+ @SuppressWarnings("unchecked")
+ EList<View> diagramViews = (EList<View>)getLayersStack().getDiagram().getChildren();
+
+ // Create the OCL statement
+ SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+ new FROM(diagramViews), new WHERE(condition),
+ new NullProgressMonitor());
+
+ // Execute the OCL statement
+ IQueryResult results = statement.execute();
+
+ // Compute views to add
+ // This are views in the result, but not in the list of attached
+ // viewsToAdd = results - getViews()
+ List<View> viewsToAdd = new ArrayList<View>();
+ List<View> attachedViews = getViews();
+ for( Object o : results ) {
+ View v = (View)o;
+ if( !attachedViews.contains(v)) {
+ viewsToAdd.add(v);
+ }
+ }
+
+ // Compute views to remove
+ // Their is two ways to compute it:
+ // - viewsToremove = diagramViews - results
+ // - or viewsToremove = getViews() - result
+ // Use the cheaper one.
+ // The computed viewsToRemove list contains also views that are not in the layer,
+ // But this is cheaper than checking for the existence.
+
+// List<View> viewsToRemove = new ArrayList<View>();
+// for( View v : (views.size()<getViews().size()?views:getViews()) ) {
+// if( !results.contains(v)) {
+// viewsToRemove.add(v);
+// }
+// }
+
+ // Do operations
+ getViews().retainAll(results);
+// getViews().removeAll(viewsToRemove);
+ getViews().addAll(viewsToAdd);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EList<View> lookupDerivedViews(EList<View> views) throws LayersException {
+// if(condition == null) {
+// return EList.EMPTY_LIST;
+// }
+//
+// // Check views from the diagram.
+// @SuppressWarnings("unchecked")
+// EList<View> diagramViews = (EList<View>)getLayersStack().getDiagram().getChildren();
+//
+// // Create the OCL statement
+// SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+// new FROM(diagramViews), new WHERE(condition),
+// new NullProgressMonitor());
+//
+// // Execute the OCL statement
+// IQueryResult results = statement.execute();
+// return new ;
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.REG_EXP_LAYER__EXPR:
+ return getExpr();
+ case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+ return getLanguage();
+ case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+ return isDomainChangedEventDependant();
+ case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+ return getDomainChangedEventLevel();
+ case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+ return isDiagramChangedEventDependant();
+ case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+ return getDiagramChangedEventLevel();
+ case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+ return getExpressionContextObjectType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.REG_EXP_LAYER__EXPR:
+ setExpr((String)newValue);
+ return;
+ case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+ setLanguage((String)newValue);
+ return;
+ case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+ setIsDomainChangedEventDependant((Boolean)newValue);
+ return;
+ case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+ setDomainChangedEventLevel((EventLevel)newValue);
+ return;
+ case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+ setIsDiagramChangedEventDependant((Boolean)newValue);
+ return;
+ case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+ setDiagramChangedEventLevel((EventLevel)newValue);
+ return;
+ case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+ setExpressionContextObjectType((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.REG_EXP_LAYER__EXPR:
+ setExpr(EXPR_EDEFAULT);
+ return;
+ case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+ setLanguage(LANGUAGE_EDEFAULT);
+ return;
+ case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+ setIsDomainChangedEventDependant(IS_DOMAIN_CHANGED_EVENT_DEPENDANT_EDEFAULT);
+ return;
+ case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+ setDomainChangedEventLevel(DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT);
+ return;
+ case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+ setIsDiagramChangedEventDependant(IS_DIAGRAM_CHANGED_EVENT_DEPENDANT_EDEFAULT);
+ return;
+ case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+ setDiagramChangedEventLevel(DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT);
+ return;
+ case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+ setExpressionContextObjectType(EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.REG_EXP_LAYER__EXPR:
+ return EXPR_EDEFAULT == null ? expr != null : !EXPR_EDEFAULT.equals(expr);
+ case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+ return LANGUAGE_EDEFAULT == null ? language != null : !LANGUAGE_EDEFAULT.equals(language);
+ case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+ return isDomainChangedEventDependant != IS_DOMAIN_CHANGED_EVENT_DEPENDANT_EDEFAULT;
+ case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+ return domainChangedEventLevel != DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT;
+ case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+ return isDiagramChangedEventDependant != IS_DIAGRAM_CHANGED_EVENT_DEPENDANT_EDEFAULT;
+ case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+ return diagramChangedEventLevel != DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT;
+ case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+ return EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT == null ? expressionContextObjectType != null : !EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT.equals(expressionContextObjectType);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.REG_EXP_LAYER___ACTIVATE__ABSTRACTLAYEROPERATOR:
+ activate((AbstractLayerOperator)arguments.get(0));
+ return null;
+ case LayersPackage.REG_EXP_LAYER___DEACTIVATE__ABSTRACTLAYEROPERATOR:
+ deactivate((AbstractLayerOperator)arguments.get(0));
+ return null;
+ case LayersPackage.REG_EXP_LAYER___IS_DERIVED_VIEW__VIEW:
+ try {
+ return isDerivedView((View)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.REG_EXP_LAYER___ATTACH_DERIVED_VIEW__VIEW:
+ try {
+ attachDerivedView((View)arguments.get(0));
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.REG_EXP_LAYER___ATTACH_DERIVED_VIEWS__ELIST:
+ try {
+ attachDerivedViews((EList<View>)arguments.get(0));
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.REG_EXP_LAYER___ATTACH_DERIVED_VIEWS:
+ try {
+ attachDerivedViews();
+ return null;
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.REG_EXP_LAYER___LOOKUP_DERIVED_VIEWS__ELIST:
+ try {
+ return lookupDerivedViews((EList<View>)arguments.get(0));
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (expr: ");
+ result.append(expr);
+ result.append(", language: ");
+ result.append(language);
+ result.append(", isDomainChangedEventDependant: ");
+ result.append(isDomainChangedEventDependant);
+ result.append(", domainChangedEventLevel: ");
+ result.append(domainChangedEventLevel);
+ result.append(", isDiagramChangedEventDependant: ");
+ result.append(isDiagramChangedEventDependant);
+ result.append(", diagramChangedEventLevel: ");
+ result.append(diagramChangedEventLevel);
+ result.append(", expressionContextObjectType: ");
+ result.append(expressionContextObjectType);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * Called by the observers when a view is added.
+ * @param view
+ */
+ protected void viewAdded( View view) {
+
+ }
+
+ /**
+ * Called by the observers when a view is removed.
+ * @param view
+ */
+ protected void viewRemoved( View view) {
+
+ }
+
+// public class ViewEventAdapter extends {
+//
+// }
+
+ public class DiagramViewEventListener implements IDiagramViewEventListener {
+
+ @Override
+ public void diagramViewAdded(Notification msg) {
+ viewAdded((View)msg.getNewValue());
+
+ }
+
+ @Override
+ public void diagramViewRemoved(Notification msg) {
+ viewRemoved((View)msg.getNewValue());
+ }
+
+ }
+
+} //RegExpLayerImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/SimpleLayerDescriptorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/SimpleLayerDescriptorImpl.java
new file mode 100644
index 00000000000..7e577dce5b0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/SimpleLayerDescriptorImpl.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Simple Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class SimpleLayerDescriptorImpl extends LayerDescriptorImpl implements SimpleLayerDescriptor {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SimpleLayerDescriptorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.SIMPLE_LAYER_DESCRIPTOR;
+ }
+
+} //SimpleLayerDescriptorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImpl.java
new file mode 100644
index 00000000000..ef6648b3120
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImpl.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StackedLayerOperatorDescriptorImpl extends LayerOperatorDescriptorImpl implements StackedLayerOperatorDescriptor {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated not
+ */
+ protected StackedLayerOperatorDescriptorImpl() {
+ super();
+ init();
+ }
+
+ /**
+ * Init the descriptor.
+ */
+ private void init() {
+ setName("StackedLayerOperator");
+
+ }
+
+ /**
+ * New instance creation counter.
+ */
+ static int count = 0;
+
+ /**
+ * Create the requested {@link StackedLayerOperator} and init it.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()
+ *
+ * @return
+ */
+ @Override
+ public AbstractLayerOperator createLayerOperator() {
+
+
+ StackedLayerOperator layerOperator = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layerOperator.setLayerOperatorDescriptor(this);
+ layerOperator.setLayerOperatorDescriptorName(this.getName());
+ layerOperator.setName(getName() + count++);
+
+ return layerOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.STACKED_LAYER_OPERATOR_DESCRIPTOR;
+ }
+
+} //StackedLayerOperatorDescriptorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImpl.java
new file mode 100644
index 00000000000..e43a7bd55f1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImpl.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Stacked Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StackedLayerOperatorImpl extends AbstractLayerOperatorImpl implements StackedLayerOperator {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected StackedLayerOperatorImpl() {
+ super();
+
+ // Add an observer
+ Adapter adapter = new LayerDescriptorSynchronizer();
+ this.eAdapters().add(adapter);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.STACKED_LAYER_OPERATOR;
+ }
+
+ /**
+ * Reset the descriptor accordingly to the descriptor name.
+ * The descriptor is resseted only if the ::application and ::layerOperatorDescriptorName are set.
+ * Nothing is done if one of the attribute is not set.
+ * Nothing is done if the descriptor can not be found (maybe a log is issue).
+ * <!-- begin-user-doc -->
+ * Not used ?
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void resetDescriptor() {
+
+ if( getApplication() == null || getLayerOperatorDescriptorName() == null) {
+ // A property is not yet set.
+ // do nothing
+ return;
+ }
+
+ try {
+ LayerOperatorDescriptor descriptor = getApplication().getLayerOperatorDescriptorRegistry().getLayerOperatorDescriptor(getLayerOperatorDescriptorName());
+ setLayerOperatorDescriptor(descriptor);
+ } catch (NotFoundException e) {
+ // Not found
+ // TODO log the error
+ System.err.println("LOG-" + this.getClass().getName()
+ + "- Can't get LayerOperatorDescriptor for descriptorName '" + getLayerOperatorDescriptorName() + "'.");
+ }
+ }
+
+ /**
+ * This class listen to #propertyValueMap, and synchronize propertyValues accordingly.
+ *
+ *
+ */
+ public class LayerDescriptorSynchronizer extends AdapterImpl {
+
+ @Override
+ public void notifyChanged(Notification msg) {
+// System.err.println("event " + msg.getEventType());
+
+ switch(msg.getFeatureID(AbstractLayer.class)) {
+ case LayersPackage.STACKED_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+ notifyDescriptorNameChanged(msg);
+ break;
+
+ case LayersPackage.STACKED_LAYER_OPERATOR__APPLICATION:
+ notifyLayerApplicationFeatureChanged(msg);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ /**
+ * The {@link LayerImpl#propertyValueMap} has changed. Synchronize the {@link LayerImpl#propertyValues} list.
+ * @param msg
+ */
+ protected void notifyDescriptorNameChanged(Notification msg) {
+// System.err.println("descriptor name changed " + msg.getEventType());
+ switch(msg.getEventType()) {
+ case Notification.SET:
+ {
+ // Name is set
+ resetDescriptor();
+ break;
+ }
+ default:
+ break;
+ }
+
+ }
+ /**
+ * The {@link LayerImpl#propertyValueMap} has changed. Synchronize the {@link LayerImpl#propertyValues} list.
+ * @param msg
+ */
+ protected void notifyLayerApplicationFeatureChanged(Notification msg) {
+// System.err.println("application changed " + msg.getEventType());
+ switch(msg.getEventType()) {
+ case Notification.SET:
+ {
+ // Application is set
+ resetDescriptor();
+ break;
+ }
+ }
+ }
+
+ }
+
+
+} //StackedLayerOperatorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringInstanceImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringInstanceImpl.java
new file mode 100644
index 00000000000..05550a69f94
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringInstanceImpl.java
@@ -0,0 +1,200 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringInstanceImpl extends TypeInstanceImpl implements StringInstance {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected String value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.STRING_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_INSTANCE__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.STRING_INSTANCE__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.STRING_INSTANCE__VALUE:
+ setValue((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_INSTANCE__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_INSTANCE__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromString(String value) {
+
+ if(value==null || value.length()==0) {
+ return;
+ }
+
+ setValue(value.trim());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValueFromInstance(TypeInstance value) {
+
+ // Check if the value is of the right instance
+ if( ! getClass().isInstance(value) ) {
+ return;
+ }
+
+ StringInstance instance = (StringInstance)value;
+ setValue(instance.getValue());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //StringInstanceImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertyIndexMapImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertyIndexMapImpl.java
new file mode 100644
index 00000000000..721f1145878
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertyIndexMapImpl.java
@@ -0,0 +1,335 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String To Property Index Map</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl#getTypedValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl#getTypedKey <em>Key</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringToPropertyIndexMapImpl extends MinimalEObjectImpl.Container implements BasicEMap.Entry<String,PropertyIndex> {
+ /**
+ * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedValue()
+ * @generated
+ * @ordered
+ */
+ protected PropertyIndex value;
+
+ /**
+ * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected String key = KEY_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToPropertyIndexMapImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyIndex getTypedValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypedValue(PropertyIndex newValue, NotificationChain msgs) {
+ PropertyIndex oldValue = value;
+ value = newValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedValue(PropertyIndex newValue) {
+ if (newValue != value) {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE, null, msgs);
+ msgs = basicSetTypedValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTypedKey() {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedKey(String newKey) {
+ String oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+ return basicSetTypedValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+ return getTypedValue();
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+ return getTypedKey();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+ setTypedValue((PropertyIndex)newValue);
+ return;
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+ setTypedKey((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+ setTypedValue((PropertyIndex)null);
+ return;
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+ setTypedKey(KEY_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+ return value != null;
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (key: ");
+ result.append(key);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash() {
+ if (hash == -1) {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash) {
+ this.hash = hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getKey() {
+ return getTypedKey();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(String key) {
+ setTypedKey(key);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyIndex getValue() {
+ return getTypedValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertyIndex setValue(PropertyIndex value) {
+ PropertyIndex oldValue = getValue();
+ setTypedValue(value);
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EMap<String, PropertyIndex> getEMap() {
+ EObject container = eContainer();
+ return container == null ? null : (EMap<String, PropertyIndex>)container.eGet(eContainmentFeature());
+ }
+
+} //StringToPropertyIndexMapImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertySetterImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertySetterImpl.java
new file mode 100644
index 00000000000..b5c05d79ac8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertySetterImpl.java
@@ -0,0 +1,335 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String To Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringToPropertySetterImpl extends MinimalEObjectImpl.Container implements BasicEMap.Entry<String,PropertySetter> {
+ /**
+ * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected String key = KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedValue()
+ * @generated
+ * @ordered
+ */
+ protected PropertySetter value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToPropertySetterImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.STRING_TO_PROPERTY_SETTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTypedKey() {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedKey(String newKey) {
+ String oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_SETTER__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertySetter getTypedValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypedValue(PropertySetter newValue, NotificationChain msgs) {
+ PropertySetter oldValue = value;
+ value = newValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedValue(PropertySetter newValue) {
+ if (newValue != value) {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE, null, msgs);
+ msgs = basicSetTypedValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+ return basicSetTypedValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+ return getTypedKey();
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+ return getTypedValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+ setTypedKey((String)newValue);
+ return;
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+ setTypedValue((PropertySetter)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+ setTypedKey(KEY_EDEFAULT);
+ return;
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+ setTypedValue((PropertySetter)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+ return value != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (key: ");
+ result.append(key);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash() {
+ if (hash == -1) {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash) {
+ this.hash = hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getKey() {
+ return getTypedKey();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(String key) {
+ setTypedKey(key);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertySetter getValue() {
+ return getTypedValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PropertySetter setValue(PropertySetter value) {
+ PropertySetter oldValue = getValue();
+ setTypedValue(value);
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EMap<String, PropertySetter> getEMap() {
+ EObject container = eContainer();
+ return container == null ? null : (EMap<String, PropertySetter>)container.eGet(eContainmentFeature());
+ }
+
+} //StringToPropertySetterImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeInstanceMapImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeInstanceMapImpl.java
new file mode 100644
index 00000000000..0dd7d38c3e6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeInstanceMapImpl.java
@@ -0,0 +1,331 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String To Type Instance Map</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringToTypeInstanceMapImpl extends MinimalEObjectImpl.Container implements BasicEMap.Entry<String,TypeInstance> {
+ /**
+ * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected String key = KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedValue()
+ * @generated
+ * @ordered
+ */
+ protected TypeInstance value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToTypeInstanceMapImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTypedKey() {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedKey(String newKey) {
+ String oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeInstance getTypedValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypedValue(TypeInstance newValue, NotificationChain msgs) {
+ TypeInstance oldValue = value;
+ value = newValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedValue(TypeInstance newValue) {
+ if (newValue != value) {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE, null, msgs);
+ msgs = basicSetTypedValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+ return basicSetTypedValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getKey() {
+ return getTypedKey();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(String key) {
+ setTypedKey(key);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeInstance getValue() {
+ return getTypedValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeInstance setValue(TypeInstance value) {
+ TypeInstance oldValue = getValue();
+ setTypedValue(value);
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EMap<String, TypeInstance> getEMap() {
+ EObject container = eContainer();
+ return container == null ? null : (EMap<String, TypeInstance>)container.eGet(eContainmentFeature());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+ return getTypedKey();
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+ return getTypedValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+ setTypedKey((String)newValue);
+ return;
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+ setTypedValue((TypeInstance)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+ setTypedKey(KEY_EDEFAULT);
+ return;
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+ setTypedValue((TypeInstance)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+ return value != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (key: ");
+ result.append(key);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash() {
+ if (hash == -1) {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash) {
+ this.hash = hash;
+ }
+
+} //StringToTypeInstanceMapImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeMapImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeMapImpl.java
new file mode 100644
index 00000000000..f252c27426e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeMapImpl.java
@@ -0,0 +1,335 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String To Type Map</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl#getTypedValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl#getTypedKey <em>Key</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringToTypeMapImpl extends MinimalEObjectImpl.Container implements BasicEMap.Entry<String,Type> {
+ /**
+ * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedValue()
+ * @generated
+ * @ordered
+ */
+ protected Type value;
+
+ /**
+ * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected String key = KEY_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToTypeMapImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.STRING_TO_TYPE_MAP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getTypedValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypedValue(Type newValue, NotificationChain msgs) {
+ Type oldValue = value;
+ value = newValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_MAP__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedValue(Type newValue) {
+ if (newValue != value) {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_TYPE_MAP__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_TYPE_MAP__VALUE, null, msgs);
+ msgs = basicSetTypedValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_MAP__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTypedKey() {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedKey(String newKey) {
+ String oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_MAP__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+ return basicSetTypedValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+ return getTypedValue();
+ case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+ return getTypedKey();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+ setTypedValue((Type)newValue);
+ return;
+ case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+ setTypedKey((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+ setTypedValue((Type)null);
+ return;
+ case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+ setTypedKey(KEY_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+ return value != null;
+ case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (key: ");
+ result.append(key);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash() {
+ if (hash == -1) {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash) {
+ this.hash = hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getKey() {
+ return getTypedKey();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(String key) {
+ setTypedKey(key);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getValue() {
+ return getTypedValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type setValue(Type value) {
+ Type oldValue = getValue();
+ setTypedValue(value);
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EMap<String, Type> getEMap() {
+ EObject container = eContainer();
+ return container == null ? null : (EMap<String, Type>)container.eGet(eContainmentFeature());
+ }
+
+} //StringToTypeMapImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImpl.java
new file mode 100644
index 00000000000..04033c8c838
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImpl.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StringTypeImpl extends TypeImpl implements StringType {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected StringTypeImpl() {
+ super();
+ setName("String");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance createInstance() {
+ return LayersFactory.eINSTANCE.createStringInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.STRING_TYPE;
+ }
+
+} //StringTypeImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImpl.java
new file mode 100644
index 00000000000..77a71d617c4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImpl.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Top Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TopLayerOperatorDescriptorImpl extends LayerOperatorDescriptorImpl implements TopLayerOperatorDescriptor {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected TopLayerOperatorDescriptorImpl() {
+ super();
+ init();
+ }
+
+ /**
+ * Init the descriptor.
+ */
+ private void init() {
+ setName("TopLayerOperator");
+
+ }
+
+ /**
+ * New instance creation counter.
+ */
+ static int count = 0;
+
+ /**
+ * Create the requested {@link StackedLayerOperator} and init it.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()
+ *
+ * @return
+ */
+ @Override
+ public AbstractLayerOperator createLayerOperator() {
+
+
+ TopLayerOperator layerOperator = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layerOperator.setLayerOperatorDescriptor(this);
+ layerOperator.setName(getName() + count++);
+
+ return layerOperator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.TOP_LAYER_OPERATOR_DESCRIPTOR;
+ }
+
+} //TopLayerOperatorDescriptorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImpl.java
new file mode 100644
index 00000000000..8289f2bf514
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImpl.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Top Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TopLayerOperatorImpl extends AbstractLayerOperatorImpl implements TopLayerOperator {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TopLayerOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.TOP_LAYER_OPERATOR;
+ }
+
+ /**
+ * Get the command to compute the required property value.
+ * Walk all layers and return the first cmd that is not null for specified view and proerty.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ *
+ * @param view
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+
+ // Walk all layers and return the first cmd that is not null for specified view and proerty.
+ for( LayerExpression layer : getLayers()) {
+
+ ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view, property);
+ if( cmd != null) {
+ return cmd;
+ }
+ }
+ // Nothing found
+ return null;
+
+ }
+
+ /**
+ * For each property, add the first property value in the list of result.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)
+ *
+ * @param view
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> properties) throws LayersException {
+
+ // Simple implementation
+ // TODO Check if we can optimize
+
+ // the result list
+ EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(properties.size());
+ boolean isCmdFound = false;
+
+ for( Property property : properties) {
+ if( property == null) {
+ resCmds.add(null);
+ continue;
+ }
+
+ ComputePropertyValueCommand cmd = getComputePropertyValueCommand(view, property);
+ if( cmd != null) {
+ isCmdFound = true;
+ }
+ resCmds.add(cmd);
+
+
+ }
+ // Return appropriate result
+ if( isCmdFound) {
+ return resCmds;
+ }
+ else {
+ // No command ==> null
+ return null;
+ }
+ }
+
+ /**
+ * For each view, add the first property value in the list of result.
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+ *
+ * @param view
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> views, Property property) throws LayersException {
+
+ // Simple implementation
+ // TODO Check if we can optimize
+
+ // the result list
+ EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(views.size());
+ boolean isCmdFound = false;
+
+ for( View view : views) {
+ if( view == null) {
+ resCmds.add(null);
+ continue;
+ }
+
+ ComputePropertyValueCommand cmd = getComputePropertyValueCommand(view, property);
+ if( cmd != null) {
+ isCmdFound = true;
+ }
+ resCmds.add(cmd);
+ }
+
+ // Return appropriate result
+ if( isCmdFound) {
+ return resCmds;
+ }
+ else {
+ // No command ==> null
+ return null;
+ }
+ }
+} //TopLayerOperatorImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeImpl.java
new file mode 100644
index 00000000000..f0c07642966
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeImpl.java
@@ -0,0 +1,319 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl#getMetamodel <em>Metamodel</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl#getDescription <em>Description</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TypeImpl extends
+FolderElementImpl implements Type {
+ /**
+ * The cached value of the '{@link #getMetamodel() <em>Metamodel</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMetamodel()
+ * @generated
+ * @ordered
+ */
+ protected Metamodel metamodel;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Metamodel getMetamodel() {
+ if (metamodel != null && metamodel.eIsProxy()) {
+ InternalEObject oldMetamodel = (InternalEObject)metamodel;
+ metamodel = (Metamodel)eResolveProxy(oldMetamodel);
+ if (metamodel != oldMetamodel) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.TYPE__METAMODEL, oldMetamodel, metamodel));
+ }
+ }
+ return metamodel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Metamodel basicGetMetamodel() {
+ return metamodel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMetamodel(Metamodel newMetamodel) {
+ Metamodel oldMetamodel = metamodel;
+ metamodel = newMetamodel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.TYPE__METAMODEL, oldMetamodel, metamodel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.TYPE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.TYPE__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeInstance createInstance() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.TYPE__METAMODEL:
+ if (resolve) return getMetamodel();
+ return basicGetMetamodel();
+ case LayersPackage.TYPE__NAME:
+ return getName();
+ case LayersPackage.TYPE__DESCRIPTION:
+ return getDescription();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.TYPE__METAMODEL:
+ setMetamodel((Metamodel)newValue);
+ return;
+ case LayersPackage.TYPE__NAME:
+ setName((String)newValue);
+ return;
+ case LayersPackage.TYPE__DESCRIPTION:
+ setDescription((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.TYPE__METAMODEL:
+ setMetamodel((Metamodel)null);
+ return;
+ case LayersPackage.TYPE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case LayersPackage.TYPE__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.TYPE__METAMODEL:
+ return metamodel != null;
+ case LayersPackage.TYPE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case LayersPackage.TYPE__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.TYPE___CREATE_INSTANCE:
+ return createInstance();
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", description: ");
+ result.append(description);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TypeImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeInstanceImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeInstanceImpl.java
new file mode 100644
index 00000000000..bbb3c07ac27
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeInstanceImpl.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TypeInstanceImpl extends MinimalEObjectImpl.Container implements TypeInstance {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.TYPE_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public TypeInstance getCmdValue() throws LayersException {
+ // By default, we return the instance itself, as there
+ // is nothing more to compute.
+ return this;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValueFromString(String value) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValueFromInstance(TypeInstance value) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case LayersPackage.TYPE_INSTANCE___GET_CMD_VALUE:
+ try {
+ return getCmdValue();
+ }
+ catch (Throwable throwable) {
+ throw new InvocationTargetException(throwable);
+ }
+ case LayersPackage.TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING:
+ setValueFromString((String)arguments.get(0));
+ return null;
+ case LayersPackage.TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE:
+ setValueFromInstance((TypeInstance)arguments.get(0));
+ return null;
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+} //TypeInstanceImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImpl.java
new file mode 100644
index 00000000000..8d6a9547570
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImpl.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl#getTypes <em>Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeRegistryImpl extends MinimalEObjectImpl.Container implements TypeRegistry {
+ /**
+ * The cached value of the '{@link #getTypes() <em>Types</em>}' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypes()
+ * @generated
+ * @ordered
+ */
+ protected EMap<String, Type> types;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected TypeRegistryImpl() {
+ super();
+ init();
+ }
+
+ /**
+ * Init the Registry.
+ * Register standard types.
+ */
+ protected void init() {
+
+ Type type = LayersFactory.eINSTANCE.createBooleanType();
+ getTypes().put(type.getName(), type);
+
+ type = LayersFactory.eINSTANCE.createIntType();
+ getTypes().put(type.getName(), type);
+
+ type = LayersFactory.eINSTANCE.createStringType();
+ getTypes().put(type.getName(), type);
+
+ addType(LayersFactory.eINSTANCE.createColor());
+ addType(LayersFactory.eINSTANCE.createFill());
+ addType(LayersFactory.eINSTANCE.createLineType());
+ addType(LayersFactory.eINSTANCE.createFontType());
+ }
+
+ /**
+ * Add the type in the registry
+ * @param type
+ */
+ public void addType(Type type) {
+ String typeName = type.getName();
+
+ getTypes().put(typeName, type);
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LayersPackage.Literals.TYPE_REGISTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<String, Type> getTypes() {
+ if (types == null) {
+ types = new EcoreEMap<String,Type>(LayersPackage.Literals.STRING_TO_TYPE_MAP, StringToTypeMapImpl.class, this, LayersPackage.TYPE_REGISTRY__TYPES);
+ }
+ return types;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LayersPackage.TYPE_REGISTRY__TYPES:
+ return ((InternalEList<?>)getTypes()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LayersPackage.TYPE_REGISTRY__TYPES:
+ if (coreType) return getTypes();
+ else return getTypes().map();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LayersPackage.TYPE_REGISTRY__TYPES:
+ ((EStructuralFeature.Setting)getTypes()).set(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LayersPackage.TYPE_REGISTRY__TYPES:
+ getTypes().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LayersPackage.TYPE_REGISTRY__TYPES:
+ return types != null && !types.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TypeRegistryImpl
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/ILayerOperatorDescriptorRegistryLoader.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/ILayerOperatorDescriptorRegistryLoader.java
new file mode 100644
index 00000000000..b5680f229a0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/ILayerOperatorDescriptorRegistryLoader.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+
+/**
+ * Interface that a {@link LayerOperatorDescriptorRegistry} loader should implements.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayerOperatorDescriptorRegistryLoader {
+
+ /**
+ * Load the specified registry. Initialize its Descriptors and its Operators.
+ *
+ * @param layerOperatorDescriptorRegistry
+ * @param propertyRegistry
+ */
+ public void loadLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry descriptorRegistry, PropertyRegistry propertyRegistry);
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoader.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoader.java
new file mode 100644
index 00000000000..c39dd42309c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoader.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator;
+
+
+/**
+ * Class used to load a {@link LayerOperatorDescriptorRegistry}.
+ *
+ * @author cedric dumoulin
+ *
+ *@deprecated use {@link RegistriesLoader} instead.
+ *
+ */
+public class LayerOperatorDescriptorRegistryLoader implements ILayerOperatorDescriptorRegistryLoader {
+
+ /**
+ * Load the specified registry. Initialize its Descriptors and its Operators.
+ *
+ * @param layerOperatorDescriptorRegistry
+ * @param propertyRegistry
+ */
+ public void loadRegistryOld(LayerOperatorDescriptorRegistry descriptorRegistry, PropertyRegistry propertyRegistry) {
+
+ // Custom operator declarations
+ // operatorName, operatorImplementationClass
+ String[] operatorDeclarations = new String[] {
+ "booleanOr", BooleanOrOperator.class.getName(),
+ "booleanAnd", BooleanAndOperator.class.getName(),
+
+ };
+
+ // Load operators
+ for( int i=0; i<operatorDeclarations.length; i+=2) {
+ CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+ operator.setName(operatorDeclarations[i]);
+ operator.setClassname(operatorDeclarations[i+1]);
+ descriptorRegistry.addPropertyOperator(operator);
+ }
+
+ // AndLayerStackOperatorDescriptor
+ // propertyName, operatorName
+ String[] andDescriptorDeclarations = new String [] {
+ "isVisible", "booleanAnd",
+ };
+
+ LayerOperatorDescriptor andDescriptor = LayersFactory.eINSTANCE.createAndStackedLayerOperatorDescriptor();
+ descriptorRegistry.addLayerOperatorDescriptor(andDescriptor);
+
+ // attach operator to layer and property
+ String descriptorName = andDescriptor.getName();
+ for( int i=0; i<andDescriptorDeclarations.length; i+=2) {
+ try {
+ descriptorRegistry.attachOperatorToDescriptor(propertyRegistry.getProperty(andDescriptorDeclarations[i]), andDescriptorDeclarations[i+1], descriptorName);
+ } catch (NotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ // OrLayerStackOperatorDescriptor
+ // propertyName, operatorName
+ String[] orDescriptorDeclarations = new String [] {
+ "isVisible", "booleanOr",
+ };
+
+ LayerOperatorDescriptor orDescriptor = LayersFactory.eINSTANCE.createOrStackedLayerOperatorDescriptor();
+ descriptorRegistry.addLayerOperatorDescriptor(orDescriptor);
+
+ // attach operator to layer and property
+ descriptorName = orDescriptor.getName();
+ for( int i=0; i<orDescriptorDeclarations.length; i+=2) {
+ try {
+ descriptorRegistry.attachOperatorToDescriptor(propertyRegistry.getProperty(orDescriptorDeclarations[i]), orDescriptorDeclarations[i+1], descriptorName);
+ } catch (NotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.loaders.ILayerOperatorDescriptorRegistryLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)
+ *
+ * @param descriptorRegistry
+ * @param propertyRegistry
+ */
+ public void loadLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry descriptorRegistry, PropertyRegistry propertyRegistry) {
+
+ createLayersConfigModel();
+
+ }
+
+ /**
+ * Create a Model
+ */
+ private void createLayersConfigModel() {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModel.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModel.java
new file mode 100644
index 00000000000..e78ed32ed0c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModel.java
@@ -0,0 +1,252 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createFolder;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorsMultipleBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createOperatorBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyId;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createTypeConfig;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.FillAverageOperator;
+
+
+/**
+ * This class encapsulate an LayersConfig model.
+ * It provides a default instance initialized with a model.
+ * @author cedric dumoulin
+ *
+ */
+public class LayersConfigModel {
+
+ /**
+ * The default instance used by all applications.
+ */
+ static final protected LayersConfigModel instance;
+
+ protected Resource resource;
+
+
+
+ /**
+ * Create and initialize default instance.
+ */
+ static {
+ instance = new LayersConfigModel();
+ instance.initDefaultModel();
+ }
+
+ /**
+ * Constructor.
+ *
+ */
+ public LayersConfigModel() {
+ createResourceAndRootFolder();
+ }
+
+
+ /**
+ * @return the instance
+ */
+ public static LayersConfigModel getInstance() {
+ return instance;
+ }
+
+ /**
+ * Init the object with a default model.
+ */
+ private void initDefaultModel() {
+ // Create model
+ Folder layeropFolder = createFolder(getRootFolder(), "layerOp");
+
+ LayerOperatorConfig stackedLayersOperatorConfig = createLayerOperatorConfig(layeropFolder, "stackedLayersOperator", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ LayerOperatorConfig stackedLayersOperatorMinimunConfig = createLayerOperatorConfig(layeropFolder, "stackedLayersOperatorMinimum", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ createLayerOperatorConfig(layeropFolder, "stackedLayersOperatorMaximum", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ LayerOperatorConfig stackedLayersOperatorAverage = createLayerOperatorConfig(layeropFolder, "stackedLayersOperatorAverage", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+
+ // Create Operators
+ Folder operatorFolder = createFolder(getRootFolder(), "operatorDesc");
+ OperatorConfig operatorBooleanAnd = createPropertyOperatorConfig(operatorFolder, "operatorBooleanAnd", BooleanAndOperator.class.getName());
+ OperatorConfig operatorBooleanOr = createPropertyOperatorConfig(operatorFolder, "operatorBooleanOr", BooleanOrOperator.class.getName());
+ OperatorConfig operatorFillAverage = createPropertyOperatorConfig(operatorFolder, "operatorFillAverage", FillAverageOperator.class.getName());
+
+
+ // Create basic types
+ Folder typeFolder = createFolder(getRootFolder(), "types");
+ TypeConfig typeBoolean = createTypeConfig(typeFolder, "boolean");
+ TypeConfig typeInt = createTypeConfig(typeFolder, "int");
+ TypeConfig typeString = createTypeConfig(typeFolder, "String");
+ TypeConfig typeFont = createTypeConfig(typeFolder, "Font");
+ TypeConfig typeColor = createTypeConfig(typeFolder, "Color");
+ TypeConfig typeFill = createTypeConfig(typeFolder, "Fill");
+ TypeConfig typeLine = createTypeConfig(typeFolder, "Line");
+
+ // Create properties
+ Folder propertiesFolder = createFolder(getRootFolder(), "properties");
+ PropertyId propertyIsVisible = createPropertyId(propertiesFolder, "isVisible", typeBoolean);
+ PropertyId propertyIsAbstract = createPropertyId(propertiesFolder, "isAbstract", typeBoolean);
+ PropertyId propertyFill = createPropertyId(propertiesFolder, "fill", typeFill);
+ PropertyId propertyLine = createPropertyId(propertiesFolder, "line", typeLine);
+ PropertyId propertyFont = createPropertyId(propertiesFolder, "font", typeFont);
+ PropertyId propertyBgcolor = createPropertyId(propertiesFolder, "bgcolor", typeColor);
+ PropertyId propertyFgcolor = createPropertyId(propertiesFolder, "fgcolor", typeColor);
+
+ // Bind operators to layers
+ Folder opBindingFolder = createFolder(getRootFolder(), "opBindings");
+
+ LayerOperatorMultipleBinding layerOpBindingsA = createLayerOperatorsMultipleBinding(opBindingFolder, stackedLayersOperatorConfig);
+ createOperatorBinding(layerOpBindingsA, propertyIsVisible, operatorBooleanAnd);
+ createOperatorBinding(layerOpBindingsA, propertyIsAbstract, operatorBooleanAnd);
+ createOperatorBinding(layerOpBindingsA, propertyFill, operatorFillAverage);
+
+ LayerOperatorMultipleBinding layerOpBindingsB = createLayerOperatorsMultipleBinding(opBindingFolder, stackedLayersOperatorMinimunConfig);
+ createOperatorBinding(layerOpBindingsB, propertyIsVisible, operatorBooleanOr);
+ createOperatorBinding(layerOpBindingsB, propertyIsAbstract, operatorBooleanOr);
+ createOperatorBinding(layerOpBindingsB, propertyFill, operatorFillAverage);
+
+ LayerOperatorMultipleBinding layerOpBindingsAverage = createLayerOperatorsMultipleBinding(opBindingFolder, stackedLayersOperatorAverage);
+ createOperatorBinding(layerOpBindingsAverage, propertyIsVisible, operatorBooleanOr);
+ createOperatorBinding(layerOpBindingsAverage, propertyIsAbstract, operatorBooleanOr);
+ createOperatorBinding(layerOpBindingsAverage, propertyFill, operatorFillAverage);
+
+ }
+
+ /**
+ * Create the resource and add it the root folder.
+ *
+ * @return
+ */
+ protected Folder createResourceAndRootFolder() {
+ // Create a resource set.
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ // Register the default resource factory -- only needed for stand-alone!
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(
+ Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
+
+ // Get the URI of the model file.
+ URI fileURI = URI.createURI("config.layersconfig");
+
+ // Create a resource for this file.
+ resource = resourceSet.createResource(fileURI);
+ Folder parent = LayersconfigFactory.eINSTANCE.createFolder();
+ resource.getContents().add(parent);
+ return parent;
+ }
+
+
+ /**
+ * @return the resource
+ */
+ public Resource getResource() {
+ return resource;
+ }
+
+ /**
+ * Get the root folder of the model.
+ * There is always a root folder
+ * @return
+ */
+ public Folder getRootFolder() {
+ return (Folder)getResource().getContents().get(0);
+ }
+
+ /**
+ * Get all {@link LayerOperatorConfig} contained in the model.
+ * @return
+ */
+ public List<LayerOperatorConfig> getAllLayerOperatorConfig() {
+
+ List<LayerOperatorConfig> res = new ArrayList<LayerOperatorConfig>();
+
+ TreeIterator<EObject> iter = resource.getAllContents();
+ while(iter.hasNext()) {
+ EObject obj = iter.next();
+ if( obj instanceof LayerOperatorConfig) {
+ res.add((LayerOperatorConfig)obj);
+ }
+ }
+ return res;
+ }
+
+ /**
+ * Get all object of the specified type contained in the model.
+ *
+ * @param type The expected type for objects
+ *
+ * @return A list of object with the specified type.
+ */
+ @SuppressWarnings("unchecked")
+ public <T extends EObject> List<T> getAllOfType( Class<T> type) {
+ List<T> res = new ArrayList<T>();
+
+ TreeIterator<EObject> iter = resource.getAllContents();
+ while(iter.hasNext()) {
+ EObject obj = iter.next();
+ if( type.isInstance(obj) ) {
+ res.add((T)obj);
+ }
+ }
+ return res;
+ }
+
+ /**
+ * Get all operators config objects.
+ *
+ * @return
+ */
+ public List<OperatorConfig> getAllOperatorConfig() {
+
+ return getAllOfType(OperatorConfig.class);
+ }
+
+
+ /**
+ * Get all {@link OperatorBinding} declared in the model.
+ * @return
+ */
+ public List<OperatorBinding> getAllOperatorBinding() {
+ return getAllOfType(OperatorBinding.class);
+ }
+
+
+ /**
+ * Initialize the provided model with some defs for tests.
+ *
+ * @param model
+ */
+ private void initLayersConfigModel(LayersConfigModel model) {
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelUtils.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelUtils.java
new file mode 100644
index 00000000000..446cf03dff7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelUtils.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+
+/**
+ * Set of utility methods to create elements in a {@link LayersConfigModel}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersConfigModelUtils {
+
+ /**
+ * Create a {@link Folder} element
+ * @param parent
+ * @param name
+ * @return
+ */
+ static public Folder createFolder(Folder parent, String name) {
+ Folder folder = LayersconfigFactory.eINSTANCE.createFolder();
+ folder.setName(name);
+ parent.getFolderElements().add(folder);
+ return folder;
+ }
+
+ /**
+ * Create a {@link LayerOperatorConfig} element
+ * @param parent
+ * @param ID
+ * @param classname
+ * @return
+ */
+ static public LayerOperatorConfig createLayerOperatorConfig(Folder parent, String ID, String classname) {
+ LayerOperatorConfig config = LayersconfigFactory.eINSTANCE.createLayerOperatorConfig();
+ config.setName(ID);
+ config.setClassname(classname);
+ parent.getFolderElements().add(config);
+ return config;
+ }
+
+ /**
+ * Create a {@link OperatorConfig} element
+ * @param parent
+ * @param ID
+ * @param classname
+ * @return
+ */
+ static public OperatorConfig createPropertyOperatorConfig(Folder parent, String ID, String classname) {
+ OperatorConfig config = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+ config.setName(ID);
+ config.setClassname(classname);
+ parent.getFolderElements().add(config);
+ return config;
+ }
+
+ /**
+ *
+ * @param owner
+ * @param layerOperator
+ * @return
+ */
+ static public LayerOperatorMultipleBinding createLayerOperatorsMultipleBinding(Folder owner, LayerOperatorConfig layerOperator) {
+ LayerOperatorMultipleBinding config = LayersconfigFactory.eINSTANCE.createLayerOperatorMultipleBinding();
+ config.setLayerOperatorConfig(layerOperator);
+ owner.getFolderElements().add(config);
+ return config;
+ }
+
+ static public OperatorBinding createOperatorBinding(LayerOperatorMultipleBinding owner, PropertyId propertyId, OperatorConfig operatorConfig) {
+ OperatorBinding binding = LayersconfigFactory.eINSTANCE.createOperatorBinding();
+ binding.setPropertyId(propertyId);
+ binding.setOperator(operatorConfig);
+ binding.setOwner(owner);
+ return binding;
+ }
+
+ static public PropertyId createPropertyId(Folder parent, String ID, TypeConfig type) {
+ PropertyId propertyId = LayersconfigFactory.eINSTANCE.createPropertyId();
+ propertyId.setName(ID);
+ propertyId.setType(type);
+ parent.getFolderElements().add(propertyId);
+ return propertyId;
+ }
+
+ static public TypeConfig createTypeConfig(Folder parent, String ID) {
+ TypeConfig config = LayersconfigFactory.eINSTANCE.createTypeConfig();
+ config.setName(ID);
+ parent.getFolderElements().add(config);
+ return config;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoader.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoader.java
new file mode 100644
index 00000000000..7866adcea7d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoader.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+
+/**
+ * A loader used to load various Registries from a unique {@link LayersConfigModel}.
+ * @author cedric dumoulin
+ *
+ */
+public class RegistriesLoader implements ILayerOperatorDescriptorRegistryLoader {
+
+ /**
+ * The model used to load the registries.
+ *
+ */
+ protected LayersConfigModel model;
+
+ /**
+ * Constructor.
+ *
+ * @param model
+ */
+ public RegistriesLoader(LayersConfigModel model) {
+ this.model = model;
+ }
+
+ /**
+ * Load the {@link LayerOperatorDescriptorRegistry} from the {@link LayersConfigModel}.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.loaders.ILayerOperatorDescriptorRegistryLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)
+ *
+ * @param descriptorRegistry
+ * @param propertyRegistry
+ */
+ @Override
+ public void loadLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry descriptorRegistry, PropertyRegistry propertyRegistry) {
+
+ // Load LayerOperators
+ for( LayerOperatorConfig layerOperatorConfig : model.getAllLayerOperatorConfig() ) {
+ try {
+ LayerOperatorDescriptor descriptor = layerOperatorConfig.createLayersOperatorDescriptor();
+ descriptorRegistry.addLayerOperatorDescriptor(descriptor);
+ } catch (InstanciationException e) {
+ System.err.println("LOG - " + this.getClass().getName() + " - " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ // Load operators
+ for( OperatorConfig operatorConfig : model.getAllOperatorConfig()) {
+ try {
+ PropertyOperator operator = operatorConfig.createOperatorDescriptor();
+ descriptorRegistry.addPropertyOperator(operator);
+ } catch (InstanciationException e) {
+ System.err.println("LOG - " + this.getClass().getName() + " - " + e.getMessage());
+ e.printStackTrace();
+ }
+
+ }
+
+ // Populate LayerOperator with operators
+ for( OperatorBinding binding : model.getAllOperatorBinding()) {
+ try {
+ Property property = propertyRegistry.getProperty(binding.getPropertyId().getName());
+ String layerDescriptorName = binding.getLayerOperatorConfig().getName();
+ String operatorName = binding.getOperator().getName();
+ descriptorRegistry.attachOperatorToDescriptor(property, operatorName, layerDescriptorName);
+ } catch (NotFoundException e) {
+ System.err.println("LOG - " + this.getClass().getName() + " - " + e.getMessage());
+ e.printStackTrace();
+ }
+
+ }
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/ECoreUtils.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/ECoreUtils.java
new file mode 100644
index 00000000000..5d16381d792
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/ECoreUtils.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ECoreUtils {
+
+ /**
+ * Check if one of the ancestor is instance of the specified type.
+ * Ancestors are classes that contains this class
+ * @param child Child for which we want to check the ancestor's type
+ * @param type The expected type
+ * @return true if one of the ancestor is of the expected type. False otherwise.
+ */
+ public static boolean isAncestorInstanceOf(EObject child, EClass type) {
+
+
+ try {
+ lookupAncestorOfType(child, type);
+ return true;
+ } catch (NotFoundException e) {
+ return false;
+ }
+
+ }
+
+ /**
+ * Lookup if one of the ancestor is instance of the specified type.
+ * Ancestors are classes that contains this class
+ * @param child Child for which we want to check the ancestor's type
+ * @param type The expected type
+ * @return the first ancestor of the specified type.
+ * @throws NotFoundException If no ancestor is found.
+ */
+ public static EObject lookupAncestorOfType(EObject child, EClass type) throws NotFoundException {
+ if (child != null)
+ {
+ if( type.isInstance(child)) {
+ return child;
+ }
+
+ int count = 0;
+ for (EObject parent = child.eContainer(); parent != null; parent = parent.eContainer())
+ {
+ if (++count > 100000)
+ {
+ return lookupAncestorOfType(child, type);
+ }
+ // Check if this is the correct type
+ if( type.isInstance(parent)) {
+ return parent;
+ }
+ if (parent == child)
+ {
+ throw new IllegalStateException("There is a cycle in the containment hierarchy of " + child);
+ }
+ }
+ }
+ //Nothing found
+ throw new NotFoundException("No ancestor of the specified type" );
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersAdapterFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersAdapterFactory.java
new file mode 100644
index 00000000000..c34b79d9acc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersAdapterFactory.java
@@ -0,0 +1,1395 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import java.util.Map;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.gmf.runtime.notation.NamedStyle;
+import org.eclipse.gmf.runtime.notation.Style;
+
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage
+ * @generated
+ */
+public class LayersAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static LayersPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = LayersPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LayersSwitch<Adapter> modelSwitch =
+ new LayersSwitch<Adapter>() {
+ @Override
+ public Adapter caseLayerNamedStyle(LayerNamedStyle object) {
+ return createLayerNamedStyleAdapter();
+ }
+ @Override
+ public Adapter caseLayersStack(LayersStack object) {
+ return createLayersStackAdapter();
+ }
+ @Override
+ public Adapter caseLayerExpression(LayerExpression object) {
+ return createLayerExpressionAdapter();
+ }
+ @Override
+ public Adapter caseApplicationDependantElement(ApplicationDependantElement object) {
+ return createApplicationDependantElementAdapter();
+ }
+ @Override
+ public Adapter caseLayersStackApplication(LayersStackApplication object) {
+ return createLayersStackApplicationAdapter();
+ }
+ @Override
+ public Adapter caseFolderElement(FolderElement object) {
+ return createFolderElementAdapter();
+ }
+ @Override
+ public Adapter caseLayerStackDescriptorRegistry(LayerStackDescriptorRegistry object) {
+ return createLayerStackDescriptorRegistryAdapter();
+ }
+ @Override
+ public Adapter casePropertyRegistry(PropertyRegistry object) {
+ return createPropertyRegistryAdapter();
+ }
+ @Override
+ public Adapter caseProperty(Property object) {
+ return createPropertyAdapter();
+ }
+ @Override
+ public Adapter caseType(Type object) {
+ return createTypeAdapter();
+ }
+ @Override
+ public Adapter caseMetamodel(Metamodel object) {
+ return createMetamodelAdapter();
+ }
+ @Override
+ public Adapter caseTypeInstance(TypeInstance object) {
+ return createTypeInstanceAdapter();
+ }
+ @Override
+ public Adapter caseComputePropertyValueCommandItf(ComputePropertyValueCommand object) {
+ return createComputePropertyValueCommandItfAdapter();
+ }
+ @Override
+ public Adapter caseTypeRegistry(TypeRegistry object) {
+ return createTypeRegistryAdapter();
+ }
+ @Override
+ public Adapter caseStringToTypeMap(Map.Entry<String, Type> object) {
+ return createStringToTypeMapAdapter();
+ }
+ @Override
+ public Adapter caseLayerDescriptorRegistry(LayerDescriptorRegistry object) {
+ return createLayerDescriptorRegistryAdapter();
+ }
+ @Override
+ public Adapter caseLayerDescriptor(LayerDescriptor object) {
+ return createLayerDescriptorAdapter();
+ }
+ @Override
+ public Adapter caseLayerApplicationFactory(LayerApplicationFactory object) {
+ return createLayerApplicationFactoryAdapter();
+ }
+ @Override
+ public Adapter casePropertySetterRegistry(PropertySetterRegistry object) {
+ return createPropertySetterRegistryAdapter();
+ }
+ @Override
+ public Adapter casePropertySetter(PropertySetter object) {
+ return createPropertySetterAdapter();
+ }
+ @Override
+ public Adapter caseStringToPropertySetter(Map.Entry<String, PropertySetter> object) {
+ return createStringToPropertySetterAdapter();
+ }
+ @Override
+ public Adapter caseLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry object) {
+ return createLayerOperatorDescriptorRegistryAdapter();
+ }
+ @Override
+ public Adapter caseLayerOperatorDescriptor(LayerOperatorDescriptor object) {
+ return createLayerOperatorDescriptorAdapter();
+ }
+ @Override
+ public Adapter casePropertyOperator(PropertyOperator object) {
+ return createPropertyOperatorAdapter();
+ }
+ @Override
+ public Adapter caseAbstractLayerOperator(AbstractLayerOperator object) {
+ return createAbstractLayerOperatorAdapter();
+ }
+ @Override
+ public Adapter caseLayerOperator(LayerOperator object) {
+ return createLayerOperatorAdapter();
+ }
+ @Override
+ public Adapter caseLayersContainer(LayersContainer object) {
+ return createLayersContainerAdapter();
+ }
+ @Override
+ public Adapter caseDefaultPropertyOperator(DefaultPropertyOperator object) {
+ return createDefaultPropertyOperatorAdapter();
+ }
+ @Override
+ public Adapter caseAbstractLayer(AbstractLayer object) {
+ return createAbstractLayerAdapter();
+ }
+ @Override
+ public Adapter caseStringToTypeInstanceMap(Map.Entry<String, TypeInstance> object) {
+ return createStringToTypeInstanceMapAdapter();
+ }
+ @Override
+ public Adapter caseFolder(Folder object) {
+ return createFolderAdapter();
+ }
+ @Override
+ public Adapter caseIntInstance(IntInstance object) {
+ return createIntInstanceAdapter();
+ }
+ @Override
+ public Adapter caseBooleanInstance(BooleanInstance object) {
+ return createBooleanInstanceAdapter();
+ }
+ @Override
+ public Adapter caseStringInstance(StringInstance object) {
+ return createStringInstanceAdapter();
+ }
+ @Override
+ public Adapter caseIntType(IntType object) {
+ return createIntTypeAdapter();
+ }
+ @Override
+ public Adapter caseBooleanType(BooleanType object) {
+ return createBooleanTypeAdapter();
+ }
+ @Override
+ public Adapter caseStringType(StringType object) {
+ return createStringTypeAdapter();
+ }
+ @Override
+ public Adapter caseCustomType(CustomType object) {
+ return createCustomTypeAdapter();
+ }
+ @Override
+ public Adapter caseTopLayerOperator(TopLayerOperator object) {
+ return createTopLayerOperatorAdapter();
+ }
+ @Override
+ public Adapter caseStackedLayerOperator(StackedLayerOperator object) {
+ return createStackedLayerOperatorAdapter();
+ }
+ @Override
+ public Adapter caseCustomLayerOperator(CustomLayerOperator object) {
+ return createCustomLayerOperatorAdapter();
+ }
+ @Override
+ public Adapter casePropertyIndex(PropertyIndex object) {
+ return createPropertyIndexAdapter();
+ }
+ @Override
+ public Adapter caseStringToPropertyIndexMap(Map.Entry<String, PropertyIndex> object) {
+ return createStringToPropertyIndexMapAdapter();
+ }
+ @Override
+ public Adapter caseSimpleLayerDescriptor(SimpleLayerDescriptor object) {
+ return createSimpleLayerDescriptorAdapter();
+ }
+ @Override
+ public Adapter caseRegExpLayerDescriptor(RegExpLayerDescriptor object) {
+ return createRegExpLayerDescriptorAdapter();
+ }
+ @Override
+ public Adapter caseNullInstance(NullInstance object) {
+ return createNullInstanceAdapter();
+ }
+ @Override
+ public Adapter caseRegExpLayer(RegExpLayer object) {
+ return createRegExpLayerAdapter();
+ }
+ @Override
+ public Adapter caseLayer(Layer object) {
+ return createLayerAdapter();
+ }
+ @Override
+ public Adapter caseColor(Color object) {
+ return createColorAdapter();
+ }
+ @Override
+ public Adapter caseColorInstance(ColorInstance object) {
+ return createColorInstanceAdapter();
+ }
+ @Override
+ public Adapter caseFillInstance(FillInstance object) {
+ return createFillInstanceAdapter();
+ }
+ @Override
+ public Adapter caseFill(Fill object) {
+ return createFillAdapter();
+ }
+ @Override
+ public Adapter caseFillPropertySetter(FillPropertySetter object) {
+ return createFillPropertySetterAdapter();
+ }
+ @Override
+ public Adapter caseIsValidPropertySetter(IsValidPropertySetter object) {
+ return createIsValidPropertySetterAdapter();
+ }
+ @Override
+ public Adapter caseNullPropertySetter(NullPropertySetter object) {
+ return createNullPropertySetterAdapter();
+ }
+ @Override
+ public Adapter caseLineType(LineType object) {
+ return createLineTypeAdapter();
+ }
+ @Override
+ public Adapter caseLineInstance(LineInstance object) {
+ return createLineInstanceAdapter();
+ }
+ @Override
+ public Adapter caseLinePropertySetter(LinePropertySetter object) {
+ return createLinePropertySetterAdapter();
+ }
+ @Override
+ public Adapter caseFontPropertySetter(FontPropertySetter object) {
+ return createFontPropertySetterAdapter();
+ }
+ @Override
+ public Adapter caseFontInstance(FontInstance object) {
+ return createFontInstanceAdapter();
+ }
+ @Override
+ public Adapter caseFontType(FontType object) {
+ return createFontTypeAdapter();
+ }
+ @Override
+ public Adapter caseIsVisiblePropertySetter(IsVisiblePropertySetter object) {
+ return createIsVisiblePropertySetterAdapter();
+ }
+ @Override
+ public Adapter caseTopLayerOperatorDescriptor(TopLayerOperatorDescriptor object) {
+ return createTopLayerOperatorDescriptorAdapter();
+ }
+ @Override
+ public Adapter caseStackedLayerOperatorDescriptor(StackedLayerOperatorDescriptor object) {
+ return createStackedLayerOperatorDescriptorAdapter();
+ }
+ @Override
+ public Adapter caseCustomPropertyOperator(CustomPropertyOperator object) {
+ return createCustomPropertyOperatorAdapter();
+ }
+ @Override
+ public Adapter caseAndStackedLayerOperatorDescriptor(AndStackedLayerOperatorDescriptor object) {
+ return createAndStackedLayerOperatorDescriptorAdapter();
+ }
+ @Override
+ public Adapter caseOrStackedLayerOperatorDescriptor(OrStackedLayerOperatorDescriptor object) {
+ return createOrStackedLayerOperatorDescriptorAdapter();
+ }
+ @Override
+ public Adapter caseIsAbstractUmlSetter(IsAbstractUmlSetter object) {
+ return createIsAbstractUmlSetterAdapter();
+ }
+ @Override
+ public Adapter caseAllViewsDerivedLayer(AllViewsDerivedLayer object) {
+ return createAllViewsDerivedLayerAdapter();
+ }
+ @Override
+ public Adapter caseStyle(Style object) {
+ return createStyleAdapter();
+ }
+ @Override
+ public Adapter caseNamedStyle(NamedStyle object) {
+ return createNamedStyleAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle <em>Layer Named Style</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle
+ * @generated
+ */
+ public Adapter createLayerNamedStyleAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack <em>Stack</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack
+ * @generated
+ */
+ public Adapter createLayersStackAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Layer <em>Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Layer
+ * @generated
+ */
+ public Adapter createLayerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Color <em>Color</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Color
+ * @generated
+ */
+ public Adapter createColorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance <em>Color Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance
+ * @generated
+ */
+ public Adapter createColorInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance <em>Fill Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FillInstance
+ * @generated
+ */
+ public Adapter createFillInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Fill <em>Fill</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Fill
+ * @generated
+ */
+ public Adapter createFillAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter <em>Fill Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter
+ * @generated
+ */
+ public Adapter createFillPropertySetterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter <em>Is Valid Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter
+ * @generated
+ */
+ public Adapter createIsValidPropertySetterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter <em>Null Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter
+ * @generated
+ */
+ public Adapter createNullPropertySetterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineType <em>Line Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LineType
+ * @generated
+ */
+ public Adapter createLineTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance <em>Line Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LineInstance
+ * @generated
+ */
+ public Adapter createLineInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter <em>Line Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter
+ * @generated
+ */
+ public Adapter createLinePropertySetterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter <em>Font Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter
+ * @generated
+ */
+ public Adapter createFontPropertySetterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance <em>Font Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance
+ * @generated
+ */
+ public Adapter createFontInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontType <em>Font Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FontType
+ * @generated
+ */
+ public Adapter createFontTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter <em>Is Visible Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter
+ * @generated
+ */
+ public Adapter createIsVisiblePropertySetterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry
+ * @generated
+ */
+ public Adapter createLayerOperatorDescriptorRegistryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor <em>Top Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor
+ * @generated
+ */
+ public Adapter createTopLayerOperatorDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor <em>Stacked Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor
+ * @generated
+ */
+ public Adapter createStackedLayerOperatorDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator <em>Custom Property Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator
+ * @generated
+ */
+ public Adapter createCustomPropertyOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor <em>And Stacked Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor
+ * @generated
+ */
+ public Adapter createAndStackedLayerOperatorDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor <em>Or Stacked Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor
+ * @generated
+ */
+ public Adapter createOrStackedLayerOperatorDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter <em>Is Abstract Uml Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter
+ * @generated
+ */
+ public Adapter createIsAbstractUmlSetterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer <em>All Views Derived Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer
+ * @generated
+ */
+ public Adapter createAllViewsDerivedLayerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance <em>Type Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance
+ * @generated
+ */
+ public Adapter createTypeInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command Itf</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+ * @generated
+ */
+ public Adapter createComputePropertyValueCommandItfAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>String To Type Instance Map</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.util.Map.Entry
+ * @generated
+ */
+ public Adapter createStringToTypeInstanceMapAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor <em>Layer Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor
+ * @generated
+ */
+ public Adapter createLayerDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory <em>Layer Application Factory</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory
+ * @generated
+ */
+ public Adapter createLayerApplicationFactoryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry <em>Property Setter Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry
+ * @generated
+ */
+ public Adapter createPropertySetterRegistryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter <em>Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter
+ * @generated
+ */
+ public Adapter createPropertySetterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>String To Property Setter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.util.Map.Entry
+ * @generated
+ */
+ public Adapter createStringToPropertySetterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer <em>Abstract Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer
+ * @generated
+ */
+ public Adapter createAbstractLayerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Property
+ * @generated
+ */
+ public Adapter createPropertyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FolderElement <em>Folder Element</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.FolderElement
+ * @generated
+ */
+ public Adapter createFolderElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression <em>Layer Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression
+ * @generated
+ */
+ public Adapter createLayerExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement <em>Application Dependant Element</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement
+ * @generated
+ */
+ public Adapter createApplicationDependantElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Type
+ * @generated
+ */
+ public Adapter createTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel <em>Metamodel</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel
+ * @generated
+ */
+ public Adapter createMetamodelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder <em>Folder</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.Folder
+ * @generated
+ */
+ public Adapter createFolderAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance <em>Int Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IntInstance
+ * @generated
+ */
+ public Adapter createIntInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance <em>Boolean Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance
+ * @generated
+ */
+ public Adapter createBooleanInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance <em>String Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.StringInstance
+ * @generated
+ */
+ public Adapter createStringInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntType <em>Int Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.IntType
+ * @generated
+ */
+ public Adapter createIntTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType <em>Boolean Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanType
+ * @generated
+ */
+ public Adapter createBooleanTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringType <em>String Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.StringType
+ * @generated
+ */
+ public Adapter createStringTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType <em>Custom Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomType
+ * @generated
+ */
+ public Adapter createCustomTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication <em>Stack Application</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication
+ * @generated
+ */
+ public Adapter createLayersStackApplicationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry <em>Layer Stack Descriptor Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry
+ * @generated
+ */
+ public Adapter createLayerStackDescriptorRegistryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry <em>Property Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry
+ * @generated
+ */
+ public Adapter createPropertyRegistryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>String To Property Index Map</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.util.Map.Entry
+ * @generated
+ */
+ public Adapter createStringToPropertyIndexMapAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor <em>Simple Layer Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor
+ * @generated
+ */
+ public Adapter createSimpleLayerDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor <em>Reg Exp Layer Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor
+ * @generated
+ */
+ public Adapter createRegExpLayerDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance <em>Null Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.NullInstance
+ * @generated
+ */
+ public Adapter createNullInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer <em>Reg Exp Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer
+ * @generated
+ */
+ public Adapter createRegExpLayerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex <em>Property Index</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex
+ * @generated
+ */
+ public Adapter createPropertyIndexAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry <em>Type Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry
+ * @generated
+ */
+ public Adapter createTypeRegistryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>String To Type Map</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.util.Map.Entry
+ * @generated
+ */
+ public Adapter createStringToTypeMapAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry <em>Layer Descriptor Registry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry
+ * @generated
+ */
+ public Adapter createLayerDescriptorRegistryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator <em>Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator
+ * @generated
+ */
+ public Adapter createLayerOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer <em>Container</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer
+ * @generated
+ */
+ public Adapter createLayersContainerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator <em>Abstract Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator
+ * @generated
+ */
+ public Adapter createAbstractLayerOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor <em>Layer Operator Descriptor</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+ * @generated
+ */
+ public Adapter createLayerOperatorDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator <em>Property Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+ * @generated
+ */
+ public Adapter createPropertyOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator <em>Default Property Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator
+ * @generated
+ */
+ public Adapter createDefaultPropertyOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator <em>Top Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator
+ * @generated
+ */
+ public Adapter createTopLayerOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator <em>Stacked Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator
+ * @generated
+ */
+ public Adapter createStackedLayerOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator <em>Custom Layer Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator
+ * @generated
+ */
+ public Adapter createCustomLayerOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gmf.runtime.notation.Style <em>Style</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gmf.runtime.notation.Style
+ * @generated
+ */
+ public Adapter createStyleAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gmf.runtime.notation.NamedStyle <em>Named Style</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gmf.runtime.notation.NamedStyle
+ * @generated
+ */
+ public Adapter createNamedStyleAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //LayersAdapterFactory
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersSwitch.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersSwitch.java
new file mode 100644
index 00000000000..4be600c0ef1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersSwitch.java
@@ -0,0 +1,1674 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import java.util.Map;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.gmf.runtime.notation.NamedStyle;
+import org.eclipse.gmf.runtime.notation.Style;
+
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage
+ * @generated
+ */
+public class LayersSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static LayersPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LayersSwitch() {
+ if (modelPackage == null) {
+ modelPackage = LayersPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case LayersPackage.LAYER_NAMED_STYLE: {
+ LayerNamedStyle layerNamedStyle = (LayerNamedStyle)theEObject;
+ T result = caseLayerNamedStyle(layerNamedStyle);
+ if (result == null) result = caseNamedStyle(layerNamedStyle);
+ if (result == null) result = caseStyle(layerNamedStyle);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYERS_STACK: {
+ LayersStack layersStack = (LayersStack)theEObject;
+ T result = caseLayersStack(layersStack);
+ if (result == null) result = caseLayersContainer(layersStack);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYER_EXPRESSION: {
+ LayerExpression layerExpression = (LayerExpression)theEObject;
+ T result = caseLayerExpression(layerExpression);
+ if (result == null) result = caseApplicationDependantElement(layerExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.APPLICATION_DEPENDANT_ELEMENT: {
+ ApplicationDependantElement applicationDependantElement = (ApplicationDependantElement)theEObject;
+ T result = caseApplicationDependantElement(applicationDependantElement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYERS_STACK_APPLICATION: {
+ LayersStackApplication layersStackApplication = (LayersStackApplication)theEObject;
+ T result = caseLayersStackApplication(layersStackApplication);
+ if (result == null) result = caseFolderElement(layersStackApplication);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.FOLDER_ELEMENT: {
+ FolderElement folderElement = (FolderElement)theEObject;
+ T result = caseFolderElement(folderElement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYER_STACK_DESCRIPTOR_REGISTRY: {
+ LayerStackDescriptorRegistry layerStackDescriptorRegistry = (LayerStackDescriptorRegistry)theEObject;
+ T result = caseLayerStackDescriptorRegistry(layerStackDescriptorRegistry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.PROPERTY_REGISTRY: {
+ PropertyRegistry propertyRegistry = (PropertyRegistry)theEObject;
+ T result = casePropertyRegistry(propertyRegistry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.PROPERTY: {
+ Property property = (Property)theEObject;
+ T result = caseProperty(property);
+ if (result == null) result = caseFolderElement(property);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.TYPE: {
+ Type type = (Type)theEObject;
+ T result = caseType(type);
+ if (result == null) result = caseFolderElement(type);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.METAMODEL: {
+ Metamodel metamodel = (Metamodel)theEObject;
+ T result = caseMetamodel(metamodel);
+ if (result == null) result = caseFolderElement(metamodel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.TYPE_INSTANCE: {
+ TypeInstance typeInstance = (TypeInstance)theEObject;
+ T result = caseTypeInstance(typeInstance);
+ if (result == null) result = caseComputePropertyValueCommandItf(typeInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.COMPUTE_PROPERTY_VALUE_COMMAND_ITF: {
+ ComputePropertyValueCommand computePropertyValueCommandItf = (ComputePropertyValueCommand)theEObject;
+ T result = caseComputePropertyValueCommandItf(computePropertyValueCommandItf);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.TYPE_REGISTRY: {
+ TypeRegistry typeRegistry = (TypeRegistry)theEObject;
+ T result = caseTypeRegistry(typeRegistry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.STRING_TO_TYPE_MAP: {
+ @SuppressWarnings("unchecked") Map.Entry<String, Type> stringToTypeMap = (Map.Entry<String, Type>)theEObject;
+ T result = caseStringToTypeMap(stringToTypeMap);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYER_DESCRIPTOR_REGISTRY: {
+ LayerDescriptorRegistry layerDescriptorRegistry = (LayerDescriptorRegistry)theEObject;
+ T result = caseLayerDescriptorRegistry(layerDescriptorRegistry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYER_DESCRIPTOR: {
+ LayerDescriptor layerDescriptor = (LayerDescriptor)theEObject;
+ T result = caseLayerDescriptor(layerDescriptor);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYER_APPLICATION_FACTORY: {
+ LayerApplicationFactory layerApplicationFactory = (LayerApplicationFactory)theEObject;
+ T result = caseLayerApplicationFactory(layerApplicationFactory);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.PROPERTY_SETTER_REGISTRY: {
+ PropertySetterRegistry propertySetterRegistry = (PropertySetterRegistry)theEObject;
+ T result = casePropertySetterRegistry(propertySetterRegistry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.PROPERTY_SETTER: {
+ PropertySetter propertySetter = (PropertySetter)theEObject;
+ T result = casePropertySetter(propertySetter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.STRING_TO_PROPERTY_SETTER: {
+ @SuppressWarnings("unchecked") Map.Entry<String, PropertySetter> stringToPropertySetter = (Map.Entry<String, PropertySetter>)theEObject;
+ T result = caseStringToPropertySetter(stringToPropertySetter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY: {
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = (LayerOperatorDescriptorRegistry)theEObject;
+ T result = caseLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYER_OPERATOR_DESCRIPTOR: {
+ LayerOperatorDescriptor layerOperatorDescriptor = (LayerOperatorDescriptor)theEObject;
+ T result = caseLayerOperatorDescriptor(layerOperatorDescriptor);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.PROPERTY_OPERATOR: {
+ PropertyOperator propertyOperator = (PropertyOperator)theEObject;
+ T result = casePropertyOperator(propertyOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.ABSTRACT_LAYER_OPERATOR: {
+ AbstractLayerOperator abstractLayerOperator = (AbstractLayerOperator)theEObject;
+ T result = caseAbstractLayerOperator(abstractLayerOperator);
+ if (result == null) result = caseLayerOperator(abstractLayerOperator);
+ if (result == null) result = caseLayerExpression(abstractLayerOperator);
+ if (result == null) result = caseLayersContainer(abstractLayerOperator);
+ if (result == null) result = caseApplicationDependantElement(abstractLayerOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYER_OPERATOR: {
+ LayerOperator layerOperator = (LayerOperator)theEObject;
+ T result = caseLayerOperator(layerOperator);
+ if (result == null) result = caseLayerExpression(layerOperator);
+ if (result == null) result = caseLayersContainer(layerOperator);
+ if (result == null) result = caseApplicationDependantElement(layerOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYERS_CONTAINER: {
+ LayersContainer layersContainer = (LayersContainer)theEObject;
+ T result = caseLayersContainer(layersContainer);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.DEFAULT_PROPERTY_OPERATOR: {
+ DefaultPropertyOperator defaultPropertyOperator = (DefaultPropertyOperator)theEObject;
+ T result = caseDefaultPropertyOperator(defaultPropertyOperator);
+ if (result == null) result = casePropertyOperator(defaultPropertyOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.ABSTRACT_LAYER: {
+ AbstractLayer abstractLayer = (AbstractLayer)theEObject;
+ T result = caseAbstractLayer(abstractLayer);
+ if (result == null) result = caseLayerExpression(abstractLayer);
+ if (result == null) result = caseApplicationDependantElement(abstractLayer);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP: {
+ @SuppressWarnings("unchecked") Map.Entry<String, TypeInstance> stringToTypeInstanceMap = (Map.Entry<String, TypeInstance>)theEObject;
+ T result = caseStringToTypeInstanceMap(stringToTypeInstanceMap);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.FOLDER: {
+ Folder folder = (Folder)theEObject;
+ T result = caseFolder(folder);
+ if (result == null) result = caseFolderElement(folder);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.INT_INSTANCE: {
+ IntInstance intInstance = (IntInstance)theEObject;
+ T result = caseIntInstance(intInstance);
+ if (result == null) result = caseTypeInstance(intInstance);
+ if (result == null) result = caseComputePropertyValueCommandItf(intInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.BOOLEAN_INSTANCE: {
+ BooleanInstance booleanInstance = (BooleanInstance)theEObject;
+ T result = caseBooleanInstance(booleanInstance);
+ if (result == null) result = caseTypeInstance(booleanInstance);
+ if (result == null) result = caseComputePropertyValueCommandItf(booleanInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.STRING_INSTANCE: {
+ StringInstance stringInstance = (StringInstance)theEObject;
+ T result = caseStringInstance(stringInstance);
+ if (result == null) result = caseTypeInstance(stringInstance);
+ if (result == null) result = caseComputePropertyValueCommandItf(stringInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.INT_TYPE: {
+ IntType intType = (IntType)theEObject;
+ T result = caseIntType(intType);
+ if (result == null) result = caseType(intType);
+ if (result == null) result = caseFolderElement(intType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.BOOLEAN_TYPE: {
+ BooleanType booleanType = (BooleanType)theEObject;
+ T result = caseBooleanType(booleanType);
+ if (result == null) result = caseType(booleanType);
+ if (result == null) result = caseFolderElement(booleanType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.STRING_TYPE: {
+ StringType stringType = (StringType)theEObject;
+ T result = caseStringType(stringType);
+ if (result == null) result = caseType(stringType);
+ if (result == null) result = caseFolderElement(stringType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.CUSTOM_TYPE: {
+ CustomType customType = (CustomType)theEObject;
+ T result = caseCustomType(customType);
+ if (result == null) result = caseType(customType);
+ if (result == null) result = caseFolderElement(customType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.TOP_LAYER_OPERATOR: {
+ TopLayerOperator topLayerOperator = (TopLayerOperator)theEObject;
+ T result = caseTopLayerOperator(topLayerOperator);
+ if (result == null) result = caseAbstractLayerOperator(topLayerOperator);
+ if (result == null) result = caseLayerOperator(topLayerOperator);
+ if (result == null) result = caseLayerExpression(topLayerOperator);
+ if (result == null) result = caseLayersContainer(topLayerOperator);
+ if (result == null) result = caseApplicationDependantElement(topLayerOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.STACKED_LAYER_OPERATOR: {
+ StackedLayerOperator stackedLayerOperator = (StackedLayerOperator)theEObject;
+ T result = caseStackedLayerOperator(stackedLayerOperator);
+ if (result == null) result = caseAbstractLayerOperator(stackedLayerOperator);
+ if (result == null) result = caseLayerOperator(stackedLayerOperator);
+ if (result == null) result = caseLayerExpression(stackedLayerOperator);
+ if (result == null) result = caseLayersContainer(stackedLayerOperator);
+ if (result == null) result = caseApplicationDependantElement(stackedLayerOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.CUSTOM_LAYER_OPERATOR: {
+ CustomLayerOperator customLayerOperator = (CustomLayerOperator)theEObject;
+ T result = caseCustomLayerOperator(customLayerOperator);
+ if (result == null) result = caseLayerOperator(customLayerOperator);
+ if (result == null) result = caseLayerExpression(customLayerOperator);
+ if (result == null) result = caseLayersContainer(customLayerOperator);
+ if (result == null) result = caseApplicationDependantElement(customLayerOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.PROPERTY_INDEX: {
+ PropertyIndex propertyIndex = (PropertyIndex)theEObject;
+ T result = casePropertyIndex(propertyIndex);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP: {
+ @SuppressWarnings("unchecked") Map.Entry<String, PropertyIndex> stringToPropertyIndexMap = (Map.Entry<String, PropertyIndex>)theEObject;
+ T result = caseStringToPropertyIndexMap(stringToPropertyIndexMap);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.SIMPLE_LAYER_DESCRIPTOR: {
+ SimpleLayerDescriptor simpleLayerDescriptor = (SimpleLayerDescriptor)theEObject;
+ T result = caseSimpleLayerDescriptor(simpleLayerDescriptor);
+ if (result == null) result = caseLayerDescriptor(simpleLayerDescriptor);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.REG_EXP_LAYER_DESCRIPTOR: {
+ RegExpLayerDescriptor regExpLayerDescriptor = (RegExpLayerDescriptor)theEObject;
+ T result = caseRegExpLayerDescriptor(regExpLayerDescriptor);
+ if (result == null) result = caseLayerDescriptor(regExpLayerDescriptor);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.NULL_INSTANCE: {
+ NullInstance nullInstance = (NullInstance)theEObject;
+ T result = caseNullInstance(nullInstance);
+ if (result == null) result = caseTypeInstance(nullInstance);
+ if (result == null) result = caseComputePropertyValueCommandItf(nullInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.REG_EXP_LAYER: {
+ RegExpLayer regExpLayer = (RegExpLayer)theEObject;
+ T result = caseRegExpLayer(regExpLayer);
+ if (result == null) result = caseAbstractLayer(regExpLayer);
+ if (result == null) result = caseLayerExpression(regExpLayer);
+ if (result == null) result = caseApplicationDependantElement(regExpLayer);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LAYER: {
+ Layer layer = (Layer)theEObject;
+ T result = caseLayer(layer);
+ if (result == null) result = caseAbstractLayer(layer);
+ if (result == null) result = caseLayerExpression(layer);
+ if (result == null) result = caseApplicationDependantElement(layer);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.COLOR: {
+ Color color = (Color)theEObject;
+ T result = caseColor(color);
+ if (result == null) result = caseType(color);
+ if (result == null) result = caseFolderElement(color);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.COLOR_INSTANCE: {
+ ColorInstance colorInstance = (ColorInstance)theEObject;
+ T result = caseColorInstance(colorInstance);
+ if (result == null) result = caseTypeInstance(colorInstance);
+ if (result == null) result = caseComputePropertyValueCommandItf(colorInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.FILL_INSTANCE: {
+ FillInstance fillInstance = (FillInstance)theEObject;
+ T result = caseFillInstance(fillInstance);
+ if (result == null) result = caseTypeInstance(fillInstance);
+ if (result == null) result = caseComputePropertyValueCommandItf(fillInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.FILL: {
+ Fill fill = (Fill)theEObject;
+ T result = caseFill(fill);
+ if (result == null) result = caseType(fill);
+ if (result == null) result = caseFolderElement(fill);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.FILL_PROPERTY_SETTER: {
+ FillPropertySetter fillPropertySetter = (FillPropertySetter)theEObject;
+ T result = caseFillPropertySetter(fillPropertySetter);
+ if (result == null) result = casePropertySetter(fillPropertySetter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.IS_VALID_PROPERTY_SETTER: {
+ IsValidPropertySetter isValidPropertySetter = (IsValidPropertySetter)theEObject;
+ T result = caseIsValidPropertySetter(isValidPropertySetter);
+ if (result == null) result = casePropertySetter(isValidPropertySetter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.NULL_PROPERTY_SETTER: {
+ NullPropertySetter nullPropertySetter = (NullPropertySetter)theEObject;
+ T result = caseNullPropertySetter(nullPropertySetter);
+ if (result == null) result = casePropertySetter(nullPropertySetter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LINE_TYPE: {
+ LineType lineType = (LineType)theEObject;
+ T result = caseLineType(lineType);
+ if (result == null) result = caseType(lineType);
+ if (result == null) result = caseFolderElement(lineType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LINE_INSTANCE: {
+ LineInstance lineInstance = (LineInstance)theEObject;
+ T result = caseLineInstance(lineInstance);
+ if (result == null) result = caseTypeInstance(lineInstance);
+ if (result == null) result = caseComputePropertyValueCommandItf(lineInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.LINE_PROPERTY_SETTER: {
+ LinePropertySetter linePropertySetter = (LinePropertySetter)theEObject;
+ T result = caseLinePropertySetter(linePropertySetter);
+ if (result == null) result = casePropertySetter(linePropertySetter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.FONT_PROPERTY_SETTER: {
+ FontPropertySetter fontPropertySetter = (FontPropertySetter)theEObject;
+ T result = caseFontPropertySetter(fontPropertySetter);
+ if (result == null) result = casePropertySetter(fontPropertySetter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.FONT_INSTANCE: {
+ FontInstance fontInstance = (FontInstance)theEObject;
+ T result = caseFontInstance(fontInstance);
+ if (result == null) result = caseTypeInstance(fontInstance);
+ if (result == null) result = caseComputePropertyValueCommandItf(fontInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.FONT_TYPE: {
+ FontType fontType = (FontType)theEObject;
+ T result = caseFontType(fontType);
+ if (result == null) result = caseType(fontType);
+ if (result == null) result = caseFolderElement(fontType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.IS_VISIBLE_PROPERTY_SETTER: {
+ IsVisiblePropertySetter isVisiblePropertySetter = (IsVisiblePropertySetter)theEObject;
+ T result = caseIsVisiblePropertySetter(isVisiblePropertySetter);
+ if (result == null) result = casePropertySetter(isVisiblePropertySetter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.TOP_LAYER_OPERATOR_DESCRIPTOR: {
+ TopLayerOperatorDescriptor topLayerOperatorDescriptor = (TopLayerOperatorDescriptor)theEObject;
+ T result = caseTopLayerOperatorDescriptor(topLayerOperatorDescriptor);
+ if (result == null) result = caseLayerOperatorDescriptor(topLayerOperatorDescriptor);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.STACKED_LAYER_OPERATOR_DESCRIPTOR: {
+ StackedLayerOperatorDescriptor stackedLayerOperatorDescriptor = (StackedLayerOperatorDescriptor)theEObject;
+ T result = caseStackedLayerOperatorDescriptor(stackedLayerOperatorDescriptor);
+ if (result == null) result = caseLayerOperatorDescriptor(stackedLayerOperatorDescriptor);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.CUSTOM_PROPERTY_OPERATOR: {
+ CustomPropertyOperator customPropertyOperator = (CustomPropertyOperator)theEObject;
+ T result = caseCustomPropertyOperator(customPropertyOperator);
+ if (result == null) result = casePropertyOperator(customPropertyOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.AND_STACKED_LAYER_OPERATOR_DESCRIPTOR: {
+ AndStackedLayerOperatorDescriptor andStackedLayerOperatorDescriptor = (AndStackedLayerOperatorDescriptor)theEObject;
+ T result = caseAndStackedLayerOperatorDescriptor(andStackedLayerOperatorDescriptor);
+ if (result == null) result = caseStackedLayerOperatorDescriptor(andStackedLayerOperatorDescriptor);
+ if (result == null) result = caseLayerOperatorDescriptor(andStackedLayerOperatorDescriptor);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.OR_STACKED_LAYER_OPERATOR_DESCRIPTOR: {
+ OrStackedLayerOperatorDescriptor orStackedLayerOperatorDescriptor = (OrStackedLayerOperatorDescriptor)theEObject;
+ T result = caseOrStackedLayerOperatorDescriptor(orStackedLayerOperatorDescriptor);
+ if (result == null) result = caseStackedLayerOperatorDescriptor(orStackedLayerOperatorDescriptor);
+ if (result == null) result = caseLayerOperatorDescriptor(orStackedLayerOperatorDescriptor);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.IS_ABSTRACT_UML_SETTER: {
+ IsAbstractUmlSetter isAbstractUmlSetter = (IsAbstractUmlSetter)theEObject;
+ T result = caseIsAbstractUmlSetter(isAbstractUmlSetter);
+ if (result == null) result = casePropertySetter(isAbstractUmlSetter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LayersPackage.ALL_VIEWS_DERIVED_LAYER: {
+ AllViewsDerivedLayer allViewsDerivedLayer = (AllViewsDerivedLayer)theEObject;
+ T result = caseAllViewsDerivedLayer(allViewsDerivedLayer);
+ if (result == null) result = caseAbstractLayer(allViewsDerivedLayer);
+ if (result == null) result = caseLayerExpression(allViewsDerivedLayer);
+ if (result == null) result = caseApplicationDependantElement(allViewsDerivedLayer);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Named Style</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Named Style</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerNamedStyle(LayerNamedStyle object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Stack</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Stack</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayersStack(LayersStack object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayer(Layer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Color</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Color</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseColor(Color object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Color Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Color Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseColorInstance(ColorInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Fill Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Fill Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFillInstance(FillInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Fill</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Fill</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFill(Fill object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Fill Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Fill Property Setter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFillPropertySetter(FillPropertySetter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Is Valid Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Is Valid Property Setter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIsValidPropertySetter(IsValidPropertySetter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Null Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Null Property Setter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNullPropertySetter(NullPropertySetter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Line Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Line Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLineType(LineType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Line Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Line Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLineInstance(LineInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Line Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Line Property Setter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLinePropertySetter(LinePropertySetter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Font Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Font Property Setter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFontPropertySetter(FontPropertySetter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Font Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Font Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFontInstance(FontInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Font Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Font Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFontType(FontType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Is Visible Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Is Visible Property Setter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIsVisiblePropertySetter(IsVisiblePropertySetter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Operator Descriptor Registry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Operator Descriptor Registry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Top Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Top Layer Operator Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTopLayerOperatorDescriptor(TopLayerOperatorDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Stacked Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Stacked Layer Operator Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStackedLayerOperatorDescriptor(StackedLayerOperatorDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Custom Property Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Custom Property Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCustomPropertyOperator(CustomPropertyOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>And Stacked Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>And Stacked Layer Operator Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAndStackedLayerOperatorDescriptor(AndStackedLayerOperatorDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Or Stacked Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Or Stacked Layer Operator Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOrStackedLayerOperatorDescriptor(OrStackedLayerOperatorDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Is Abstract Uml Setter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Is Abstract Uml Setter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIsAbstractUmlSetter(IsAbstractUmlSetter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>All Views Derived Layer</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>All Views Derived Layer</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAllViewsDerivedLayer(AllViewsDerivedLayer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Type Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Type Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTypeInstance(TypeInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Compute Property Value Command Itf</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Compute Property Value Command Itf</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseComputePropertyValueCommandItf(ComputePropertyValueCommand object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String To Type Instance Map</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String To Type Instance Map</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStringToTypeInstanceMap(Map.Entry<String, TypeInstance> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerDescriptor(LayerDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Application Factory</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Application Factory</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerApplicationFactory(LayerApplicationFactory object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Property Setter Registry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Property Setter Registry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePropertySetterRegistry(PropertySetterRegistry object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Property Setter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePropertySetter(PropertySetter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String To Property Setter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String To Property Setter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStringToPropertySetter(Map.Entry<String, PropertySetter> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Layer</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Abstract Layer</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractLayer(AbstractLayer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Property</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Property</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProperty(Property object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Folder Element</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Folder Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFolderElement(FolderElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerExpression(LayerExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Application Dependant Element</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Application Dependant Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseApplicationDependantElement(ApplicationDependantElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseType(Type object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Metamodel</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Metamodel</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMetamodel(Metamodel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Folder</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Folder</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFolder(Folder object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Int Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Int Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIntInstance(IntInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Boolean Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Boolean Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBooleanInstance(BooleanInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStringInstance(StringInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Int Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Int Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIntType(IntType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Boolean Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Boolean Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBooleanType(BooleanType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStringType(StringType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Custom Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Custom Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCustomType(CustomType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Stack Application</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Stack Application</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayersStackApplication(LayersStackApplication object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Stack Descriptor Registry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Stack Descriptor Registry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerStackDescriptorRegistry(LayerStackDescriptorRegistry object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Property Registry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Property Registry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePropertyRegistry(PropertyRegistry object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String To Property Index Map</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String To Property Index Map</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStringToPropertyIndexMap(Map.Entry<String, PropertyIndex> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Simple Layer Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Simple Layer Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSimpleLayerDescriptor(SimpleLayerDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Reg Exp Layer Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Reg Exp Layer Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRegExpLayerDescriptor(RegExpLayerDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Null Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Null Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNullInstance(NullInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Reg Exp Layer</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Reg Exp Layer</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRegExpLayer(RegExpLayer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Property Index</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Property Index</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePropertyIndex(PropertyIndex object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Type Registry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Type Registry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTypeRegistry(TypeRegistry object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String To Type Map</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String To Type Map</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStringToTypeMap(Map.Entry<String, Type> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Descriptor Registry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Descriptor Registry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerDescriptorRegistry(LayerDescriptorRegistry object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerOperator(LayerOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Container</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Container</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayersContainer(LayersContainer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Abstract Layer Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractLayerOperator(AbstractLayerOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer Operator Descriptor</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer Operator Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLayerOperatorDescriptor(LayerOperatorDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Property Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Property Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePropertyOperator(PropertyOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Default Property Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Default Property Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDefaultPropertyOperator(DefaultPropertyOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Top Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Top Layer Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTopLayerOperator(TopLayerOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Stacked Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Stacked Layer Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStackedLayerOperator(StackedLayerOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Custom Layer Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Custom Layer Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCustomLayerOperator(CustomLayerOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Style</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Style</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseStyle(Style object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Named Style</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Named Style</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNamedStyle(NamedStyle object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //LayersSwitch
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedList.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedList.java
new file mode 100644
index 00000000000..106cfd0badc
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedList.java
@@ -0,0 +1,376 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+
+/**
+ * An EMF {@link EObjectResolvingEList} that automaticaly reflect a
+ * Map of (String, T). The keys are the names of the Property.
+ * The list also know the list of Properties, and use it to indexing
+ * the types of the Map.
+ * <br>
+ * usage:
+ * <br>
+ * list = new PropertyIndexedList<type>(...);
+ * list.setPropertyList( propertyRegistry.getProperties() );
+ *
+ * @author cedric dumoulin
+ *
+ * @param <T> The type of the objects contained in the list. The type should be
+ * the same as the type of the values in the backuped Map.
+ */
+public class PropertyIndexedList<T> extends EObjectResolvingEList<T> {
+
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * The backuped Map. The implementation should be an Observable Map from EMF.
+ *
+ */
+ protected EMap<String, T> map;
+
+ /**
+ * The ordered list of Property, used to indexing this List.
+ * The Property::index should be set.
+ */
+ protected List<Property> propertyList;
+
+ /**
+ * The classtype of the owner of the map
+ */
+ protected Class<?> mapParentClasstype;
+
+ /**
+ * The id of the map property in its parent.
+ */
+ final protected int MAP_FEATURE_ID;
+
+ /**
+ * The value that is used as a "null value".
+ * We can't use 'null' because the list don't support it (even
+ * if we set canSupportNull to true).
+ */
+ final protected T NULL_VALUE;
+
+ /**
+ * Constructor.
+ *
+ * @param dataClass Type of the element of the list
+ * @param layer The owner of this list and of the map
+ * @param featureID The feature Id of this list in the owner
+ *
+ * @param mapFeatureID The map feature id in the owner
+ */
+ public PropertyIndexedList(EMap<String, T> map, Class<T> dataClass, InternalEObject layer, int featureID, int mapFeatureID, T nullValue) {
+ super(dataClass, layer, featureID);
+ MAP_FEATURE_ID = mapFeatureID;
+ NULL_VALUE = nullValue;
+ mapParentClasstype = layer.getClass();
+ this.map= map;
+ init();
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param dataClass Type of the element of the list
+ * @param layer The owner of this list and of the map
+ * @param featureID The feature Id of this list in the owner
+ *
+ * @param mapFeatureID The map feature id in the owner
+ */
+ public PropertyIndexedList(Map<String, T> map, Class<T> dataClass, InternalEObject layer, int featureID, int mapFeatureID, T nullValue) {
+ super(dataClass, layer, featureID);
+ MAP_FEATURE_ID = mapFeatureID;
+ NULL_VALUE = nullValue;
+ mapParentClasstype = layer.getClass();
+ this.map= (EMap<String, T>)map;
+ init();
+ }
+
+ /**
+ * Listen on the map for addition/deletion.
+ *
+ */
+ protected void init() {
+ getEObject().eAdapters().add(new PropertyValuesSynchronizer());
+
+ }
+
+ /**
+ * Allows double
+ * @see org.eclipse.emf.ecore.util.EObjectEList#isUnique()
+ *
+ * @return
+ */
+ //
+ protected boolean isUnique() {
+ return false;
+ }
+
+ /**
+ * Allow null values in the list.
+ * @see org.eclipse.emf.ecore.util.EObjectEList#canContainNull()
+ *
+ * @return
+ */
+// @Override
+// protected boolean canContainNull() {
+// return true;
+// }
+
+
+ /**
+ * @param propertyList the propertyList to set
+ */
+ public void setPropertyList(List<Property> propertyList) {
+ this.propertyList = propertyList;
+ try {
+ resetListElements();
+ } catch (BadStateException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Reset the elements of the list, according to the map and the
+ * propertyList.
+ * @throws BadStateException
+ *
+ */
+ private void resetListElements() throws BadStateException {
+ // Reset list
+ this.clear();
+
+ // Check application
+ if(propertyList== null) {
+ // do not synchronize the list
+ return;
+// throw new BadStateException("Property 'application' must be set for resetAllPropertyValuesFromRegistry() to work.");
+ }
+
+ List<Property> availableProperties;
+ int size;
+ try {
+ availableProperties = propertyList;
+ size = availableProperties.size();
+ } catch (NullPointerException e) {
+ throw new BadStateException("Property 'application.propertyRegistry' must be set for resetAllPropertyValuesFromRegistry() to work.");
+ }
+
+ // initialize the list
+ for(int i=0;i<size;i++) {
+ String propertyName = availableProperties.get(i).getName();
+ // Add the value, or null if not found. This ensure
+ // That the list will have the correct size.
+ T value = map.get(propertyName);
+ if( value == null ) {
+ value = NULL_VALUE;
+ }
+ this.add( value);
+ }
+ }
+
+ /**
+ * Get an element by its property.
+ * @param property
+ * @return
+ * @throws NotFoundException If the index of the property is not found.
+ */
+ public T get(Property property) throws NotFoundException {
+ try {
+ return get( property.getIndex());
+ } catch (IndexOutOfBoundsException e) {
+ throw new NotFoundException("Can't get element for Property '" + property.getName()
+ + "'. ", e);
+ }
+ }
+
+ /**
+ * Set the element for the specified Property.
+ * @param property
+ * @param ele
+ * @throws BadStateException When the associated map is not set.
+ */
+ public void set( Property property, T value ) throws BadStateException {
+ if( map == null) {
+ throw new BadStateException("Can't set element for Property '" + property.getName()
+ + "'. The associated map should be set first");
+
+ }
+
+ // Set the element in the map
+ map.put(property.getName(), value);
+ }
+
+ /**
+ * Synchronize the specified propertyName with the value in the {@link #propertyValues} list.
+ * @param propertyName
+ * @param value
+ * @throws NotFoundException
+ */
+ protected void synchronizePropertyValue(String propertyName, T value) throws BadStateException, NotFoundException {
+
+ if( propertyList == null) {
+ //silently fail
+ return;
+ }
+
+ try {
+ int propertyIndex = getPropertyIndex(propertyName);
+ set(propertyIndex, value);
+ } catch (NullPointerException e) {
+ throw new BadStateException("propertyList should be set first.");
+ }
+ }
+
+
+ /**
+ * Get a Property by its name.
+ * Lookup in the {@link #propertyList} property.
+ *
+ * @param propertyName
+ * @return
+ * @throws NotFoundException
+ */
+ protected int getPropertyIndex( String propertyName) throws NotFoundException {
+
+ if(propertyName == null) {
+ throw new NotFoundException("Null name not Allowed");
+ }
+ for( int i=0; i<propertyList.size(); i++) {
+ if( propertyName.equals(propertyList.get(i).getName() ) ) {
+ return i;
+ }
+ }
+
+ // Not found
+ throw new NotFoundException("No property found under name '" + propertyName + "'");
+
+
+ }
+ /**
+ * This class listen to #propertyValueMap, and synchronize propertyValues accordingly.
+ *
+ * This adapter listen on the map's parent to know if a Property key is
+ * added or removed.
+ *
+ */
+ public class PropertyValuesSynchronizer extends AdapterImpl {
+
+
+ @Override
+ public void notifyChanged(Notification msg) {
+ System.err.println("event " + msg.getEventType());
+
+
+ // Check if the notification comes from the map
+ if( msg.getFeatureID(mapParentClasstype) == MAP_FEATURE_ID) {
+ notifyLayerPropertyValueMapChanged(msg);
+ }
+ }
+
+ /**
+ * The {@link PropertyIndexedList#map} has changed. Synchronize this list.
+ * @param msg
+ */
+ protected void notifyLayerPropertyValueMapChanged(Notification msg) {
+ System.err.println("map changed " + msg.getEventType());
+ switch(msg.getEventType()) {
+ case Notification.SET:
+ {
+ // A key is modified
+ // Add the value to other list
+ @SuppressWarnings("unchecked")
+ Map.Entry<String, T> entry = (Map.Entry<String, T>)msg.getNewValue();
+ System.out.println("SET - newValue=" + entry.getValue()
+ + ", key=" + entry.getKey());
+
+// String newKey = (String)msg.getNewValue();
+ T value = entry.getValue();
+ if( value != null) {
+ try {
+ synchronizePropertyValue(entry.getKey(), value);
+// synchronizePropertyValue(newKey, value);
+ } catch (BadStateException e) {
+ // Show error for debug
+ e.printStackTrace();
+ } catch (NotFoundException e) {
+ // Show error for debug
+ e.printStackTrace();
+ }
+ }
+
+
+ break;
+ }
+ case Notification.UNSET:
+ // A key is added
+ break;
+ case Notification.ADD:
+ {
+ // An entry is added
+ @SuppressWarnings("unchecked")
+ Map.Entry<String, T> entry = (Map.Entry<String, T>)msg.getNewValue();
+ System.out.println("ADD - newValue=" + entry.getValue()
+ + ", key=" + entry.getKey());
+ // Add the corresponding instance to propertyValues
+ try {
+ synchronizePropertyValue(entry.getKey(), entry.getValue());
+ } catch (LayersException e) {
+ // should not happen
+ e.printStackTrace();
+ }
+ break;
+ }
+ case Notification.REMOVE:
+ {
+ // An entry is removed
+ @SuppressWarnings("unchecked")
+ Map.Entry<String, T> entry = (Map.Entry<String, T>)msg.getNewValue();
+ System.out.println("REMOVE" + entry.getValue()
+ + ", key=" + entry.getKey());
+ // Add the corresponding instance to propertyValues
+ try {
+ synchronizePropertyValue(entry.getKey(), NULL_VALUE);
+ } catch (LayersException e) {
+ // should not happen
+ e.printStackTrace();
+ }
+ break;
+ }
+ default:
+ break;
+ }
+
+ }
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyUtils.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyUtils.java
new file mode 100644
index 00000000000..8ec3ac0ecd5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyUtils.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+
+/**
+ * Utility for {@link Property}
+ * @author cedric dumoulin
+ *
+ */
+public class PropertyUtils {
+
+ protected static final PropertyUtils INSTANCE;
+
+ /**
+ * Initialize the instance
+ */
+ static {
+ INSTANCE = new PropertyUtils();
+ }
+
+ /**
+ * Get an instance of the class.
+ * @return
+ */
+ public static PropertyUtils getInstance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Create a property with the specified name and type.
+ * @param name
+ * @param typeClass
+ * @return
+ */
+ public Property createProperty( String name, EClass typeClass) {
+
+ Property property = LayersFactory.eINSTANCE.createProperty();
+ property.setName(name);
+ Type type = (Type)LayersFactory.eINSTANCE.create(typeClass);
+ property.setType(type);
+ return property;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifier.java
new file mode 100644
index 00000000000..54c0d11456c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifier.java
@@ -0,0 +1,200 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * An EMF {@link Adapter} listening on notation::diagram::view added and removed.
+ *
+ * This class listen to a {@link Diagram} and send following events to listeners:
+ * <ul>
+ * <li>view removed</li>
+ * <li>view added</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewChangedEventNotifier extends EContentAdapter {
+
+ boolean isDisposed = false;
+
+ /**
+ * List of listener to notify.
+ */
+ protected List<IDiagramViewEventListener> listeners = new ArrayList<IDiagramViewEventListener>();
+
+ /**
+ * Something happen on the tree of object
+ * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ public void notifyChanged(Notification notification) {
+
+ // Self atttach
+ super.notifyChanged(notification);
+
+ // We are only interested in views (from newValue if set, or oldValue if removed)
+ // TODO Use an appropriate filter / Predicate to filter views.
+ Object newValue = notification.getNewValue();
+ if( ! (newValue instanceof View || notification.getOldValue() instanceof View ) ) {
+ return;
+ }
+ // Check diagram modification
+ // There is 4 sources: View::persistedChildren and View::transientChildren
+ // Diagram::persistedChildren and Diagram::transientChildren
+ Object feature = notification.getFeature();
+ if( feature == NotationPackage.eINSTANCE.getView_PersistedChildren()
+ || feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+ || feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+ || feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges() ) {
+ // LayerOperator::layers || LayersStack::layers
+ // check the event type.
+ switch(notification.getEventType()) {
+ case Notification.SET:
+
+ break;
+ case Notification.ADD:
+ // A view is added
+ fireDiagramViewAddedEvent(notification);
+ break;
+ case Notification.REMOVE:
+ // A layer is removed
+ fireDiagramViewRemovedEvent(notification);
+ break;
+ }
+ }
+
+ };
+
+ /**
+ * This Adapter is for {@link LayersTreeEventNotifier}.
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
+ *
+ * @param type
+ * @return
+ */
+ @Override
+ public boolean isAdapterForType(Object type) {
+ return type == DiagramViewChangedEventNotifier.class;
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ */
+ public DiagramViewChangedEventNotifier() {
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ public void dispose() {
+
+ if(isDisposed()) {
+ return;
+ }
+
+ isDisposed = true;
+ listeners.clear();
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ public boolean isDisposed() {
+ return isDisposed == true;
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addEventListener(IDiagramViewEventListener listener) {
+
+ if(listener == null ) {
+ return;
+ }
+
+ // Check if exist
+ if( listeners.contains(listener)) {
+ return;
+ }
+
+ listeners.add(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeEventListener(IDiagramViewEventListener listener) {
+
+ listeners.remove(listener);
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ protected void fireDiagramViewAddedEvent(Notification msg) {
+ for(IDiagramViewEventListener listener : listeners) {
+ listener.diagramViewAdded(msg);
+ }
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ protected void fireDiagramViewRemovedEvent(Notification msg) {
+ for(IDiagramViewEventListener listener : listeners) {
+ listener.diagramViewRemoved(msg);
+ }
+ }
+
+ /**
+ * Get the removed diagram in case of diagramRemoved event
+ * @param msg
+ * @return
+ */
+ public static View viewAddedEvent_getAddedView(Notification msg) {
+ return (View)msg.getNewValue();
+ }
+
+ /**
+ * Get the removed diagram in case of diagramRemoved event
+ * @param msg
+ * @return
+ */
+ public static View viewAddedEvent_getRemovedView(Notification msg) {
+ return (View)msg.getOldValue();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactory.java
new file mode 100644
index 00000000000..580ce62dcec
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactory.java
@@ -0,0 +1,68 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Factory used to create a {@link DiagramViewChangedEventNotifier}.
+ * The factory ensures that there is only one Notifier for a given {@link LayersStack}.
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewChangedEventNotifierFactory extends AdapterFactoryImpl {
+
+ /**
+ * Global factory.
+ */
+ static public DiagramViewChangedEventNotifierFactory instance = new DiagramViewChangedEventNotifierFactory();
+
+ /**
+ * Convenience method.
+ * @param target
+ * @return
+ */
+ public DiagramViewChangedEventNotifier adapt(Notifier target) {
+ return (DiagramViewChangedEventNotifier)adapt(target, DiagramViewChangedEventNotifier.class);
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#createAdapter(org.eclipse.emf.common.notify.Notifier)
+ *
+ * @param target
+ * @return
+ */
+ @Override
+ protected Adapter createAdapter(Notifier target) {
+ return new DiagramViewChangedEventNotifier();
+ }
+
+ /**
+ * This Factory is for {@link DiagramViewChangedEventNotifier}.
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#isFactoryForType(java.lang.Object)
+ *
+ * @param type
+ * @return
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return type == DiagramViewChangedEventNotifier.class;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewEventNotifier.java
new file mode 100644
index 00000000000..dfda9457d3e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewEventNotifier.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class listen to a {@link Diagram} and send following events to listeners:
+ * <ul>
+ * <li>view removed</li>
+ * <li>view added</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ * @deprecated use {@link DiagramViewChangedEventNotifier} instead.
+ */
+public class DiagramViewEventNotifier {
+
+ protected Diagram diagram;
+
+ /**
+ * List of listener to notify.
+ */
+ protected List<IDiagramViewEventListener> listeners = new ArrayList<IDiagramViewEventListener>();
+
+ protected Adapter diagramViewListener = new EContentAdapter() {
+
+ /**
+ * Something happen on the tree of object
+ * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ public void notifyChanged(Notification notification) {
+
+ // Self atttach
+ super.notifyChanged(notification);
+
+ // We are only interested in views (from newValue if set, or oldValue if removed)
+ Object newValue = notification.getNewValue();
+ if( ! (newValue instanceof View || notification.getOldValue() instanceof View ) ) {
+ return;
+ }
+ // Check diagram modification
+ // There is 4 sources: View::persistedChildren and View::transientChildren
+ // Diagram::persistedChildren and Diagram::transientChildren
+ Object feature = notification.getFeature();
+ if( feature == NotationPackage.eINSTANCE.getView_PersistedChildren()
+ || feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+ || feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+ || feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges() ) {
+ // LayerOperator::layers || LayersStack::layers
+ // check the event type.
+ switch(notification.getEventType()) {
+ case Notification.SET:
+
+ break;
+ case Notification.ADD:
+ // A view is added
+ fireDiagramViewAddedEvent(notification);
+ break;
+ case Notification.REMOVE:
+ // A layer is removed
+ fireDiagramViewRemovedEvent(notification);
+ break;
+ }
+ }
+ }
+
+ };
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ */
+ public DiagramViewEventNotifier(Diagram diagram) {
+ this.diagram = diagram;
+ activate();
+ }
+
+ /**
+ * Activate the listeners.
+ *
+ */
+ protected void activate() {
+ // Listen on diagram removed events
+ diagram.eAdapters().add(diagramViewListener);
+ }
+
+ /**
+ * Deactivate listeners
+ */
+ protected void deactivate() {
+ // Listen on diagram removed events
+ diagram.eAdapters().remove(diagramViewListener);
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ public void dispose() {
+ // Deactivate listeners
+ deactivate();
+ diagram = null;
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ public boolean isDisposed() {
+ return diagram == null;
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addEventListener(IDiagramViewEventListener listener) {
+
+ if(listener == null ) {
+ return;
+ }
+
+ // Check if exist
+ if( listeners.contains(listener)) {
+ return;
+ }
+
+ listeners.add(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeEventListener(IDiagramViewEventListener listener) {
+
+ listeners.remove(listener);
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ protected void fireDiagramViewAddedEvent(Notification msg) {
+ for(IDiagramViewEventListener listener : listeners) {
+ listener.diagramViewAdded(msg);
+ }
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ protected void fireDiagramViewRemovedEvent(Notification msg) {
+ for(IDiagramViewEventListener listener : listeners) {
+ listener.diagramViewRemoved(msg);
+ }
+ }
+
+ /**
+ * Get the removed diagram in case of diagramRemoved event
+ * @param msg
+ * @return
+ */
+ public static View viewAddedEvent_getAddedView(Notification msg) {
+ return (View)msg.getNewValue();
+ }
+
+ /**
+ * Get the removed diagram in case of diagramRemoved event
+ * @param msg
+ * @return
+ */
+ public static View viewAddedEvent_getRemovedView(Notification msg) {
+ return (View)msg.getOldValue();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IDiagramViewEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IDiagramViewEventListener.java
new file mode 100644
index 00000000000..2e0c8a68a94
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IDiagramViewEventListener.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStackApplication}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface IDiagramViewEventListener {
+
+ /**
+ * Called by events when a {@link View} is added to the {@link Diagram} or one of its contained
+ * elements.
+ * @param msg
+ */
+ public void diagramViewAdded(Notification msg) ;
+
+ /**
+ * Called by events when a {@link View} is removed from the {@link Diagram} or one of its contained
+ * elements.
+ * @param msg
+ */
+ public void diagramViewRemoved(Notification msg) ;
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/ILayersTreeEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/ILayersTreeEventListener.java
new file mode 100644
index 00000000000..1869150867d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/ILayersTreeEventListener.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStack}.
+ * Interface for listeners whising to be informed of change in the Tree of Layers structure.
+ * <br>
+ * Listeners of such events should register themself to the notifier {@link LayersTreeEventNotifier}.
+ * <br>
+ * The following events are fired:
+ * <ul>
+ * <li>LayerAdded</li>
+ * <li>LayerRemoved</li>
+ * <li>LayerMoved</li>
+ * <li>LayerSet</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayersTreeEventListener {
+
+ /**
+ * Method called when a layer is added to one layer.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void layerAdded( Notification notification );
+ /**
+ * Method called when a layer is removed from one layer.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void layerRemoved( Notification notification );
+ /**
+ * Method called when a layer is moved inside a {@link LayerOperator}.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void layerMoved( Notification notification );
+ /**
+ * Method called when a layer is set.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void layerSet( Notification notification );
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IUmlNamedElementChangedEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IUmlNamedElementChangedEventListener.java
new file mode 100644
index 00000000000..b2b2a24d842
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IUmlNamedElementChangedEventListener.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.uml2.uml.NamedElement;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link NamedElement}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface IUmlNamedElementChangedEventListener {
+
+ /**
+ * Called by events when a property is changed in a {@link NamedElement}
+ *
+ * @param msg
+ */
+ public void valueChanged(Notification msg) ;
+
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifier.java
new file mode 100644
index 00000000000..44356efa3de
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifier.java
@@ -0,0 +1,198 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * Notifier/observers firing events concerning the structure of the tree of layers.
+ * Obeserver should implements {@link ILayersTreeEventListener} and register themself to this
+ * notifier.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersTreeEventNotifier extends EContentAdapter {
+
+ /**
+ * List of listener to notify.
+ */
+ protected List<ILayersTreeEventListener> listeners = new ArrayList<ILayersTreeEventListener>();
+
+ /**
+ * Constructor.
+ *
+ * @param layersStack The observed {@link LayersStack}.
+ */
+ public LayersTreeEventNotifier() {
+ }
+
+ /**
+ * Dispose this object.
+ */
+ public void dispose() {
+ if(isDisposed()) {
+ return;
+ }
+ listeners.clear();
+ listeners = null;
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ public boolean isDisposed() {
+ return listeners==null;
+ }
+
+ /**
+ * Called when something happen on the tree.
+ * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ System.err.println( this.getClass().getSimpleName() + ".notifyChanged( "
+ + notification.getFeature() + ")");
+ // Self atttach
+ super.notifyChanged(notification);
+
+ // Check layers modification
+ // There is two sources: LayerOperator::layers and LayersStack::layers
+ if( notification.getFeature() == LayersPackage.eINSTANCE.getLayerOperator_Layers()
+ || notification.getFeature() == LayersPackage.eINSTANCE.getLayersStack_Layers() ) {
+ // LayerOperator::layers || LayersStack::layers
+ // check the event type.
+ switch(notification.getEventType()) {
+ case Notification.SET:
+ fireLayerSet(notification);
+ break;
+ case Notification.ADD:
+ // A layer is added
+ fireLayerAdded(notification);
+ break;
+ case Notification.REMOVE:
+ // A layer is removed
+ fireLayerRemoved(notification);
+ break;
+ case Notification.MOVE:
+ // A layer is moved
+ fireLayerMoved(notification);
+ break;
+ }
+ }
+ }
+
+ /**
+ * This Adapter is for {@link LayersTreeEventNotifier}.
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
+ *
+ * @param type
+ * @return
+ */
+ @Override
+ public boolean isAdapterForType(Object type) {
+ return type == LayersTreeEventNotifier.class;
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addLayersModelEventListener(ILayersTreeEventListener listener) {
+
+ if(listener == null ) {
+ return;
+ }
+
+ // Check if exist
+ if( listeners.contains(listener)) {
+ return;
+ }
+
+ listeners.add(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeLayersModelEventListener(ILayersTreeEventListener listener) {
+
+ listeners.remove(listener);
+ }
+
+ /**
+ * Method called when a layer is added to one layer.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void fireLayerSet( Notification notification ) {
+
+ for(ILayersTreeEventListener listener : listeners) {
+ listener.layerSet(notification);
+ }
+ }
+
+ /**
+ * Method called when a layer is added to one layer.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void fireLayerAdded( Notification notification ) {
+
+ for(ILayersTreeEventListener listener : listeners) {
+ listener.layerAdded(notification);
+ }
+ }
+
+ /**
+ * Method called when a layer is removed from one layer.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void fireLayerRemoved( Notification notification ) {
+
+ for(ILayersTreeEventListener listener : listeners) {
+ listener.layerRemoved(notification);
+ }
+ }
+
+ /**
+ * Method called when a layer is moved in LayerStack.
+ * The event contains: the layer.
+ *
+ * @param notification
+ */
+ public void fireLayerMoved( Notification notification ) {
+
+ for(ILayersTreeEventListener listener : listeners) {
+ listener.layerMoved(notification);
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactory.java
new file mode 100644
index 00000000000..3953b496eff
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactory.java
@@ -0,0 +1,68 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Factory used to create a {@link LayersTreeEventNotifier}.
+ * The factory ensures that there is only one Notifier for a given {@link LayersStack}.
+ * @author cedric dumoulin
+ *
+ */
+public class LayersTreeEventNotifierFactory extends AdapterFactoryImpl {
+
+ /**
+ * Global factory.
+ */
+ static public LayersTreeEventNotifierFactory instance = new LayersTreeEventNotifierFactory();
+
+ /**
+ * Convenience method.
+ * @param target
+ * @return
+ */
+ public LayersTreeEventNotifier adapt(Notifier target) {
+ return (LayersTreeEventNotifier)adapt(target, LayersTreeEventNotifier.class);
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#createAdapter(org.eclipse.emf.common.notify.Notifier)
+ *
+ * @param target
+ * @return
+ */
+ @Override
+ protected Adapter createAdapter(Notifier target) {
+ return new LayersTreeEventNotifier();
+ }
+
+ /**
+ * This Factory is for {@link LayersTreeEventNotifier}.
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#isFactoryForType(java.lang.Object)
+ *
+ * @param type
+ * @return
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return type == LayersTreeEventNotifier.class;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifier.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifier.java
new file mode 100644
index 00000000000..d1602eab3fb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifier.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.uml2.uml.NamedElement;
+
+
+/**
+ * An EMF {@link Adapter} listening on uml::NamedElement properties changes.
+ *
+ * This class listen to a {@link NamedElement} and send following events to listeners:
+ * <ul>
+ * <li>valueChanged</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class UmlNamedElementChangedEventNotifier extends EContentAdapter {
+
+ boolean isDisposed = false;
+
+ /**
+ * List of listener to notify.
+ */
+ protected List<IUmlNamedElementChangedEventListener> listeners = new ArrayList<IUmlNamedElementChangedEventListener>();
+
+ /**
+ * Something happen on the tree of object
+ * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param msg
+ */
+ public void notifyChanged(Notification notification) {
+
+ // Self atttach
+ super.notifyChanged(notification);
+
+ // Retain only NamedElement
+ if( ! (notification.getNotifier() instanceof NamedElement) ) {
+ return;
+ }
+
+ // No more filter: all events are forwarded
+ fireValueChangedEvent(notification);
+
+// // We are only interested in NamedElement (from newValue if set, or oldValue if removed)
+// Object newValue = notification.getNewValue();
+// if( ! (newValue instanceof NamedElement || notification.getOldValue() instanceof NamedElement ) ) {
+// return;
+// }
+// // Check diagram modification
+// // There is 4 sources: View::persistedChildren and View::transientChildren
+// // Diagram::persistedChildren and Diagram::transientChildren
+// Object feature = notification.getFeature();
+// if( feature == UMLPackage.eINSTANCE.getNamedElement()
+// || feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+// || feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+// || feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges() ) {
+// // LayerOperator::layers || LayersStack::layers
+// // check the event type.
+// switch(notification.getEventType()) {
+// case Notification.SET:
+//
+// break;
+// case Notification.ADD:
+// // A view is added
+// fireValueChangedEvent(notification);
+// break;
+// case Notification.REMOVE:
+// // A layer is removed
+// fireDiagramViewRemovedEvent(notification);
+// break;
+// }
+// }
+
+ };
+
+ /**
+ * This Adapter is for {@link LayersTreeEventNotifier}.
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
+ *
+ * @param type
+ * @return
+ */
+ @Override
+ public boolean isAdapterForType(Object type) {
+ return type == UmlNamedElementChangedEventNotifier.class;
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param layersModel
+ */
+ public UmlNamedElementChangedEventNotifier() {
+ }
+
+ /**
+ * Dispose the synchronizer
+ */
+ public void dispose() {
+
+ if(isDisposed()) {
+ return;
+ }
+
+ isDisposed = true;
+ listeners.clear();
+ }
+
+ /**
+ * Return true if the object is disposed.
+ * @return
+ */
+ public boolean isDisposed() {
+ return isDisposed == true;
+ }
+
+ /**
+ * Add the specified listener to the list of listener.
+ * Do not add it if the listener is already in the list.
+ *
+ * @param listener
+ */
+ public void addEventListener(IUmlNamedElementChangedEventListener listener) {
+
+ if(listener == null ) {
+ return;
+ }
+
+ // Check if exist
+ if( listeners.contains(listener)) {
+ return;
+ }
+
+ listeners.add(listener);
+ }
+
+ /**
+ * Remove the specified listener from the list of listeners.
+ * @param listener
+ */
+ public void removeEventListener(IUmlNamedElementChangedEventListener listener) {
+
+ listeners.remove(listener);
+ }
+
+ /**
+ * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+ * @param msg
+ */
+ protected void fireValueChangedEvent(Notification msg) {
+ for(IUmlNamedElementChangedEventListener listener : listeners) {
+ listener.valueChanged(msg);
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactory.java
new file mode 100644
index 00000000000..3b0dc5f37e9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactory.java
@@ -0,0 +1,68 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Factory used to create a {@link UmlNamedElementChangedEventNotifier}.
+ * The factory ensures that there is only one Notifier for a given {@link LayersStack}.
+ * @author cedric dumoulin
+ *
+ */
+public class UmlNamedElementChangedEventNotifierFactory extends AdapterFactoryImpl {
+
+ /**
+ * Global factory.
+ */
+ static public UmlNamedElementChangedEventNotifierFactory instance = new UmlNamedElementChangedEventNotifierFactory();
+
+ /**
+ * Convenience method.
+ * @param target
+ * @return
+ */
+ public UmlNamedElementChangedEventNotifier adapt(Notifier target) {
+ return (UmlNamedElementChangedEventNotifier)adapt(target, UmlNamedElementChangedEventNotifier.class);
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#createAdapter(org.eclipse.emf.common.notify.Notifier)
+ *
+ * @param target
+ * @return
+ */
+ @Override
+ protected Adapter createAdapter(Notifier target) {
+ return new UmlNamedElementChangedEventNotifier();
+ }
+
+ /**
+ * This Factory is for {@link UmlNamedElementChangedEventNotifier}.
+ *
+ * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#isFactoryForType(java.lang.Object)
+ *
+ * @param type
+ * @return
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return type == UmlNamedElementChangedEventNotifier.class;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/package-info.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/package-info.java
new file mode 100644
index 00000000000..443b9e3979c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/package-info.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ * This package provides reusable event notifiers.
+ *
+ * @author cedric dumoulin
+ *
+ */
+package org.eclipse.papyrus.layers.stackmodel.notifier;
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperator.java
new file mode 100644
index 00000000000..c54dfa81570
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperator.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanAndOperator implements CustomPropertyOperatorsInstance {
+
+ public static final BooleanInstance FALSE_INSTANCE;
+ public static final BooleanInstance TRUE_INSTANCE;
+
+ static {
+ FALSE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+ FALSE_INSTANCE.setValue(false);
+ TRUE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+ TRUE_INSTANCE.setValue(true);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+ *
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> nestedCommand) throws LayersException {
+ return new BooleanAndOperatorCommand(nestedCommand);
+ }
+
+
+ /**
+ * Class implementing an And command.
+ *
+ */
+ class BooleanAndOperatorCommand implements ComputePropertyValueCommand {
+
+ EList<ComputePropertyValueCommand> nestedCommand;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param nestedCommand
+ */
+ public BooleanAndOperatorCommand(EList<ComputePropertyValueCommand> nestedCommand) {
+ this.nestedCommand = nestedCommand;
+ }
+
+ /**
+ * Compute the value.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+ *
+ * @return
+ * @throws LayersException
+ */
+ public TypeInstance getCmdValue() throws LayersException {
+
+ // Do an boolean and: all value should be true.
+ // Return as soon as a false is encountered
+ for( ComputePropertyValueCommand curCmd : nestedCommand ) {
+ boolean curCmdRes = ((BooleanInstance)curCmd.getCmdValue()).isValue();
+ if(curCmdRes == false) {
+ return FALSE_INSTANCE;
+ }
+ }
+
+ return TRUE_INSTANCE;
+ }
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperator.java
new file mode 100644
index 00000000000..d027ed32a86
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperator.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanOrOperator implements CustomPropertyOperatorsInstance {
+
+ public static final BooleanInstance FALSE_INSTANCE;
+ public static final BooleanInstance TRUE_INSTANCE;
+
+ static {
+ FALSE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+ FALSE_INSTANCE.setValue(false);
+ TRUE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+ TRUE_INSTANCE.setValue(true);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+ *
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> nestedCommand) throws LayersException {
+ return new BooleanOrOperatorCommand(nestedCommand);
+ }
+
+
+ /**
+ * Class implementing an And command.
+ *
+ */
+ class BooleanOrOperatorCommand implements ComputePropertyValueCommand {
+
+ EList<ComputePropertyValueCommand> nestedCommand;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param nestedCommand
+ */
+ public BooleanOrOperatorCommand(EList<ComputePropertyValueCommand> nestedCommand) {
+ this.nestedCommand = nestedCommand;
+ }
+
+ /**
+ * Compute the value.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+ *
+ * @return
+ * @throws LayersException
+ */
+ public TypeInstance getCmdValue() throws LayersException {
+
+ // Do an boolean or: at least one value should be true.
+ // Return as soon as a true is encountered
+ for( ComputePropertyValueCommand curCmd : nestedCommand ) {
+ boolean curCmdRes = ((BooleanInstance)curCmd.getCmdValue()).isValue();
+ if(curCmdRes == true) {
+ return TRUE_INSTANCE;
+ }
+ }
+
+ return FALSE_INSTANCE;
+ }
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/CustomPropertyOperatorsInstance.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/CustomPropertyOperatorsInstance.java
new file mode 100644
index 00000000000..79e3320a379
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/CustomPropertyOperatorsInstance.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+
+/**
+ * Interface to be implemented by operators declared as "custom".
+ * @author cedric dumoulin
+ *
+ */
+public interface CustomPropertyOperatorsInstance {
+
+ /**
+ * Return the command allowing to compute the value resulting on applying this operator on the specified properties.
+ * @param property
+ * @return The command returning the result
+ * @throws LayersException
+ */
+ public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException;
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/FillAverageOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/FillAverageOperator.java
new file mode 100644
index 00000000000..d3e2743c2c2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/FillAverageOperator.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class FillAverageOperator implements CustomPropertyOperatorsInstance {
+
+ public static final BooleanInstance FALSE_INSTANCE;
+ public static final BooleanInstance TRUE_INSTANCE;
+
+ static {
+ FALSE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+ FALSE_INSTANCE.setValue(false);
+ TRUE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+ TRUE_INSTANCE.setValue(true);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+ *
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> nestedCommand) throws LayersException {
+ return new FillAverageCommand(nestedCommand);
+ }
+
+
+ /**
+ * Class implementing an And command.
+ *
+ */
+ class FillAverageCommand implements ComputePropertyValueCommand {
+
+ EList<ComputePropertyValueCommand> nestedCommand;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param nestedCommand
+ */
+ public FillAverageCommand(EList<ComputePropertyValueCommand> nestedCommand) {
+ this.nestedCommand = nestedCommand;
+ }
+
+ /**
+ * Compute the value.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+ *
+ * @return
+ * @throws LayersException
+ */
+ public TypeInstance getCmdValue() throws LayersException {
+
+ int fill=0;
+ int color=0;
+ // compute the average values
+ for( ComputePropertyValueCommand curCmd : nestedCommand ) {
+ FillInstance curValue = ((FillInstance)curCmd.getCmdValue());
+ fill += curValue.getTransparency();
+ color += curValue.getFillColor().getValue();
+ }
+
+ // Create a result
+ FillInstance res = LayersFactory.eINSTANCE.createFillInstance();
+ ColorInstance colorInstance = LayersFactory.eINSTANCE.createColorInstance();
+ res.setFillColor(colorInstance);
+ res.setTransparency( fill/nestedCommand.size() );
+ res.getFillColor().setValue(color/nestedCommand.size());
+ return res;
+ }
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/Collections3.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/Collections3.java
new file mode 100644
index 00000000000..7d6269fecff
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/Collections3.java
@@ -0,0 +1,75 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import com.google.common.collect.Collections2;
+
+/**
+ * Set of utility methods for Collections.
+ * @see Collections2
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class Collections3 {
+
+ /**
+ * Reset the toChange list to the content of the newContent list.
+ * Minimize the change calls on the toChange list.
+ * This method ensure that there is at most 2 writing calls to the list to modify: one
+ * removeAll(toBeRemoved) and one addAll(toBeAdded).
+ *
+ * @param toChange
+ * @param newContent
+ */
+ public static <E> void resetListTo(Collection<E> toChange, Collection<E> newContent) {
+
+ // Compute removed and added
+ Collection<E> elementsToRemove = new ArrayList<E>();
+ Collection<E> elementsToAdd = new ArrayList<E>();
+
+ // Compute added and removed elements. Walk both list 2 times.
+ // This could certainly be improved.
+ // TODO improve the algorithm
+
+ // Compute added elements
+ for( E o : newContent ) {
+ if( !toChange.contains(o)) {
+ elementsToAdd.add(o);
+ continue;
+ }
+ }
+
+ // Compute removed elements
+ for( E o : toChange ) {
+ if( !newContent.contains(o)) {
+ elementsToRemove.add(o);
+ continue;
+ }
+ }
+
+ // Change the list
+ if( ! elementsToRemove.isEmpty()) {
+ toChange.removeAll(elementsToRemove);
+ }
+ if( !elementsToAdd.isEmpty()) {
+ toChange.addAll(elementsToAdd);
+ }
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizer.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizer.java
new file mode 100644
index 00000000000..52280d6b38b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizer.java
@@ -0,0 +1,121 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifierFactory;
+import org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+/**
+ * This class allows to synchronize a specfied list with {@link View} elements from the specified
+ * {@link Diagram}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewToListSynchronizer {
+
+ protected Diagram diagram;
+
+ protected Collection<View> synchronizedList;
+
+ /**
+ * Listener on Diagram's View event.
+ * Synchronize the associated list according to the event.
+ */
+ private IDiagramViewEventListener viewEventListener = new IDiagramViewEventListener() {
+
+ @Override
+ public void diagramViewRemoved(Notification msg) {
+ // Add the removed view from the list
+ synchronizedList.remove((View)msg.getOldValue());
+
+ }
+
+ @Override
+ public void diagramViewAdded(Notification msg) {
+
+ View view = (View)msg.getNewValue();
+ if( synchronizedList.contains(view)) {
+ return;
+ }
+ // add element
+ synchronizedList.add(view);
+ }
+ };
+
+ /**
+ * Constructor.
+ *
+ * @param diagram
+ * @param synchronizedList
+ */
+ public DiagramViewToListSynchronizer(Diagram diagram, Collection<View> synchronizedList) {
+ this.synchronizedList = synchronizedList;
+
+ // Listen to diagram's view event
+ setDiagram(diagram);
+ }
+
+ /**
+ * The diagram should be set later.
+ * Constructor.
+ *
+ * @param synchronizedList
+ */
+ public DiagramViewToListSynchronizer(Collection<View> synchronizedList) {
+ this.synchronizedList = synchronizedList;
+ }
+
+ /**
+ * Set the diagram synchronized to the list.
+ * @param diagram
+ */
+ public void setDiagram(Diagram diagram) {
+
+ DiagramViewChangedEventNotifier notifier;
+ // stop listening on old diagram if any
+ Diagram oldDiagram = this.diagram;
+ if( oldDiagram != null) {
+ notifier = DiagramViewChangedEventNotifierFactory.instance.adapt(oldDiagram);
+ notifier.removeEventListener(viewEventListener);
+ }
+ // Reset the list and add view responding to the predicate
+ synchronizedList.clear();
+
+ Iterable<View> filteredList = Iterables.filter(diagram.getChildren(), LayerDiagramViewPredicate.instance);
+ for( View view : filteredList ) {
+ synchronizedList.add(view);
+ }
+
+ // attach to new diagram
+ this.diagram = diagram;
+ if( diagram != null) {
+ notifier = DiagramViewChangedEventNotifierFactory.instance.adapt(diagram);
+ notifier.addEventListener(viewEventListener);
+ }
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/LayerDiagramViewPredicate.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/LayerDiagramViewPredicate.java
new file mode 100644
index 00000000000..acc94b4160d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/LayerDiagramViewPredicate.java
@@ -0,0 +1,64 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.Edge;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.uml2.uml.NamedElement;
+
+import com.google.common.base.Predicate;
+
+/**
+ * A Predicate used to filter {@link View} allowed by {@link Layer}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerDiagramViewPredicate implements Predicate<View> {
+
+ /**
+ * Singleton instnace.
+ */
+ public static final LayerDiagramViewPredicate instance = new LayerDiagramViewPredicate();
+
+ /**
+ * Return true if the view is allowed by Layers.
+ *
+ * @see com.google.common.base.Predicate#apply(java.lang.Object)
+ *
+ * @param view
+ * @return
+ */
+ @Override
+ public boolean apply(View view) {
+
+ // View should be Shape or Edge
+ if( ! (view instanceof Shape || view instanceof Edge ) ) {
+ return false;
+ }
+
+ // Domain element should be set and should be NamedElement
+ EObject ele = view.getElement();
+ if( ele == null || !(ele instanceof NamedElement) ) {
+ return false;
+ }
+ // ok
+ return true;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java
new file mode 100644
index 00000000000..7ae761009e9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java
@@ -0,0 +1,352 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import com.google.common.collect.ForwardingList;
+import com.google.common.collect.Lists;
+import com.google.common.eventbus.EventBus;
+
+/**
+ * An observable list notifying of events on the delegated list.
+ * This view allows to observe a provided list.
+ * The following events are notified:
+ * <ul>
+ * <li>elements added</li>
+ * <li>elements removed</li>
+ * <li></li>
+ * <li></li>
+ * </ul>
+ * @author cedric dumoulin
+ *
+ */
+public class ObservableListView<E> extends ForwardingList<E>{
+
+ protected List<E> delegate;
+
+ protected EventBus eventBus = new EventBus(ObservableListView.class.getName());
+
+ /**
+ * Construct an observable list with a {@link ArrayList} as delegate.
+ * Constructor.
+ *
+ */
+ public ObservableListView() {
+ this( new ArrayList<E>());
+ }
+
+ /**
+ * Constructor.
+ * Build an observable list based on the provided list.
+ *
+ * @param delegate
+ */
+ public ObservableListView(List<E> delegate) {
+ this.delegate = delegate;
+ }
+
+ @Override
+ protected List<E> delegate() {
+ return delegate;
+ }
+
+ /**
+ * @return the eventBus
+ */
+ public EventBus getEventBus() {
+ return eventBus;
+ }
+
+ @Override
+ public boolean add(E element) {
+ boolean isModified = delegate().add( element);
+ if( isModified) {
+ eventBus.post(new ObservableListEvent(element));
+ }
+
+ return isModified;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends E> collection) {
+ boolean isModified = delegate().addAll(collection);
+ if( isModified) {
+ eventBus.post(new ObservableListEvent(collection));
+ }
+
+ return isModified;
+ }
+
+ @Override
+ public void add(int index, E element) {
+ delegate().add(index, element);
+ eventBus.post(new ObservableListEvent(element));
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends E> elements) {
+ // TODO Auto-generated method stub
+ boolean isModified = delegate().addAll(index, elements);
+ if( isModified) {
+ eventBus.post(new ObservableListEvent(elements));
+ }
+
+ return isModified;
+ }
+
+ @Override
+ public E remove(int index) {
+ E removed = super.remove(index);
+ getEventBus().post( new ObservableListEvent(null, removed));
+
+ return removed;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean remove(Object object) {
+ boolean isRemoved = super.remove(object);
+ if( isRemoved ) {
+ getEventBus().post( new ObservableListEvent(null, (E)object));
+ }
+ return isRemoved;
+ }
+
+ /**
+ *
+ * @see com.google.common.collect.ForwardingCollection#removeAll(java.util.Collection)
+ *
+ * @param collection
+ * @return
+ */
+ @Override
+ public boolean removeAll(Collection<?> collection) {
+ // Compute the removed elements (for the events)
+ List<E> removedElements = Lists.newArrayList(delegate());
+ removedElements.retainAll(collection);
+
+ // Do remove
+ boolean isRemoved = super.removeAll(collection);
+ if( isRemoved ) {
+ getEventBus().post( new ObservableListEvent(null, (Collection<? extends E>) removedElements));
+ }
+ return isRemoved;
+ }
+
+ /**
+ * Reset the collection to the specified collection.
+ * Throw events containing the added and removed elements.
+ *
+ * @param collection
+ * @return
+ */
+ public boolean resetTo(Collection<? extends E> collection ) {
+
+ // Compute removed and added
+ Collection<E> elementsToRemove = new ArrayList<E>();
+ Collection<E> elementsToAdd = new ArrayList<E>();
+
+ // Cached list of attached elements
+ Collection<? extends E> attachedElements = delegate();
+
+ // Compute added and removed elements. Walk both list 2 times.
+ // This could certainly be improved.
+ // TODO improve the algorithm
+
+ // Compute added elements
+ for( E o : collection ) {
+ if( !attachedElements.contains(o)) {
+ elementsToAdd.add(o);
+ continue;
+ }
+ }
+
+ // Compute removed elements
+ for( E o : attachedElements ) {
+ if( !collection.contains(o)) {
+ elementsToRemove.add(o);
+ continue;
+ }
+ }
+
+ // Change the list
+ delegate().clear();
+ delegate().addAll(collection);
+
+ // Fire event
+ boolean isModified = !(elementsToAdd.isEmpty() && elementsToRemove.isEmpty() );
+ if( isModified ) {
+ getEventBus().post( new ObservableListEvent(elementsToAdd, elementsToRemove));
+ }
+
+ return isModified;
+ }
+
+ /**
+ * Event used to specify that the list is changed
+ * @author cedric dumoulin
+ *
+ */
+ public class ObservableListEvent {
+
+ Collection<? extends E> addedElements = Collections.emptyList();
+ Collection<? extends E> removedElements = Collections.emptyList();
+
+ /**
+ *
+ * Constructor.
+ *
+ */
+ public ObservableListEvent() {
+ this.addedElements = Collections.emptyList();
+ this.removedElements = Collections.emptyList();
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ */
+ public ObservableListEvent(Collection<? extends E> addedElements) {
+ if( addedElements!=null ) {
+ this.addedElements = addedElements;
+ }
+ else {
+ this.addedElements = Collections.emptyList();
+ }
+
+ this.removedElements = Collections.emptyList();
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param addedElements added elements or null
+ * @param removedElements removed elements or null
+ */
+ public ObservableListEvent(Collection<? extends E> addedElements, Collection<? extends E> removedElements) {
+ if( addedElements!=null ) {
+ this.addedElements = addedElements;
+ }
+ else {
+ this.addedElements = Collections.emptyList();
+ }
+
+ if( removedElements != null ) {
+ this.removedElements = removedElements;
+ }
+ else {
+ this.removedElements = Collections.emptyList();
+ }
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param addedElement An element added or null;
+ * @param removedElement An element added or null
+ */
+ public ObservableListEvent( E addedElement, E removedElement) {
+
+ if( addedElement!=null ) {
+ addedElements = Collections.singletonList(addedElement);
+ }
+ else {
+ addedElements = Collections.emptyList();
+ }
+
+ if( removedElement != null ) {
+ removedElements = Collections.singletonList(removedElement);
+ }
+ else {
+ removedElements = Collections.emptyList();
+ }
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param addedElement An element added or null;
+ */
+ public ObservableListEvent( E addedElement) {
+
+ if( addedElement!=null ) {
+ addedElements = Collections.singletonList(addedElement);
+ }
+ else {
+ addedElements = Collections.emptyList();
+ }
+ removedElements = Collections.emptyList();
+ }
+
+ /**
+ * @return the addedElements
+ */
+ public Collection<? extends E> getAddedElements() {
+ return addedElements;
+ }
+
+// /**
+// * @param addedElements the addedElements to set
+// */
+// public void setAddedElements(List<E> addedElements) {
+// this.addedElements = addedElements;
+// }
+//
+// /**
+// * @param addedElements the addedElements to set
+// */
+// public void setAddedElements(E addedElement) {
+// this.addedElements = Collections.singletonList(addedElement);
+// }
+
+ /**
+ * @return the removedElements
+ */
+ public Collection<? extends E> getRemovedElements() {
+ return removedElements;
+ }
+
+// /**
+// * @param removedElements the removedElements to set
+// */
+// public void setRemovedElements(List<E> removedElements) {
+// this.removedElements = removedElements;
+// }
+//
+// /**
+// * @param removedElements the removedElements to set
+// */
+// public void setRemovedElements(E removedElement) {
+// this.removedElements = Collections.singletonList(removedElement);
+// }
+ }
+
+ /**
+ * Return the underlying list. This can be used as an unnotifying version of the list.
+ *
+ * @return
+ */
+ public List<E> getUnnotifyingList() {
+ return delegate();
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/models/model1.notation b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/models/model1.notation
new file mode 100644
index 00000000000..23a31324f1e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/models/model1.notation
@@ -0,0 +1,5508 @@
+<?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/4.0.0/UML">
+ <notation:Diagram xmi:id="_mmXS0LcqEeK8_t7Rpq6ZJA" type="PapyrusUMLClassDiagram" name="overview" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_xbaJwLcqEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xbaJwrcqEeK8_t7Rpq6ZJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xbaJw7cqEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xbaJxLcqEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xbaJxbcqEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YsPE0LcrEeK8_t7Rpq6ZJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YsPE0bcrEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="0"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xbaJyLcqEeK8_t7Rpq6ZJA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJybcqEeK8_t7Rpq6ZJA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJyrcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJy7cqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJzLcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJzbcqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJzrcqEeK8_t7Rpq6ZJA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJz7cqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJ0LcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJ0bcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJ0rcqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJ07cqEeK8_t7Rpq6ZJA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJ1LcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJ1bcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJ1rcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJ17cqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <element xmi:type="uml:Class" href="notation/notation.uml#_AziHercnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJwbcqEeK8_t7Rpq6ZJA" x="30" y="-24"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yPB_ELcqEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_ErcqEeK8_t7Rpq6ZJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_E7cqEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_FLcqEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_FbcqEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_FrcqEeK8_t7Rpq6ZJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_F7cqEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yPB_GLcqEeK8_t7Rpq6ZJA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_GbcqEeK8_t7Rpq6ZJA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_GrcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_G7cqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_HLcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_HbcqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_HrcqEeK8_t7Rpq6ZJA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_H7cqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_ILcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_IbcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_IrcqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_I7cqEeK8_t7Rpq6ZJA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_JLcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_JbcqEeK8_t7Rpq6ZJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_JrcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_J7cqEeK8_t7Rpq6ZJA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_yN_dQLcqEeK8_t7Rpq6ZJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_EbcqEeK8_t7Rpq6ZJA" x="24" y="108" width="134" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eO9nANa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nAta7EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nA9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nBNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nBda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nBta7EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nB9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eO9nCNa7EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eO9nCda7EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eO9nCta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eO9nC9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eO9nDNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nDda7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eO9nDta7EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eO9nD9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eO9nENa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eO9nEda7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nEta7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ePGw8Na7EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ePGw8da7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ePGw8ta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ePGw89a7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ePGw9Na7EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nAda7EeKPiuTfpuvqHA" x="120" y="768"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gUHVoNa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVota7EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVo9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVpNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVpda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVpta7EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVp9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gUHVqNa7EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVqda7EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVqta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVq9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVrNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVrda7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVrta7EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVr9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVsNa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVsda7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVsta7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVs9a7EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVtNa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVtda7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVtta7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVt9a7EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVoda7EeKPiuTfpuvqHA" x="437" y="84" width="122" height="391"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DOnbMNjhEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbMtjhEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbM9jhEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbNNjhEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbNdjhEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbNtjhEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbN9jhEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DOnbONjhEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbOdjhEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbOtjhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbO9jhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbPNjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbPdjhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbPtjhEeKQqZMBCFd2Uw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_jpOsYNjhEeKQqZMBCFd2Uw" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_jo2R4NjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jpOsYdjhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QDJocN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_8QO3kN0kEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QDJocd0lEeKwptaAAanMDg" x="43" y="27"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QDV1sN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_H4FrgN0lEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QDV1sd0lEeKwptaAAanMDg" x="43" y="27"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jM4SYN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ZJ8N0N0lEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jM4SYd0lEeKwptaAAanMDg" x="56" y="77"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jM78wN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ZdgqEN0lEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jM78wd0lEeKwptaAAanMDg" x="56" y="77"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbP9jhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbQNjhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbQdjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbQtjhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbQ9jhEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbRNjhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbRdjhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbRtjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbR9jhEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_DN8s0NjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbMdjhEeKQqZMBCFd2Uw" x="168" y="210" width="166" height="199"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WHUKENjiEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKEtjiEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKE9jiEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKFNjiEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKFdjiEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKFtjiEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKF9jiEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WHUKGNjiEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKGdjiEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKGtjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKG9jiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKHNjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKHdjiEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKHtjiEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKH9jiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKINjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKIdjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKItjiEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKI9jiEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKJNjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKJdjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKJtjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKJ9jiEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKEdjiEeKQqZMBCFd2Uw" x="660" y="84"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Y0q5cNjoEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5ctjoEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5c9joEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5dNjoEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5ddjoEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5dtjoEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5d9joEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y0q5eNjoEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y0q5edjoEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y0q5etjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y0q5e9joEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0q5fNjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5fdjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y0q5ftjoEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y0q5f9joEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y0q5gNjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0q5gdjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5gtjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y0xAENjoEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y0xAEdjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y0xAEtjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0xAE9joEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0xAFNjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5cdjoEeKQqZMBCFd2Uw" x="12" y="216" height="67"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_8O26INjoEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26ItjoEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26I9joEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26JNjoEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26JdjoEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26JtjoEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26J9joEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8O26KNjoEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8O26KdjoEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_8O26KtjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8O26K9joEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26LNjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26LdjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8O26LtjoEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_8O26L9joEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8O26MNjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26MdjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26MtjoEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8O26M9joEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_8O26NNjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8O26NdjoEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26NtjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26N9joEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_8OefoNjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26IdjoEeKQqZMBCFd2Uw" x="312" y="462" width="120" height="67"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AToXINjpEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXItjpEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXI9jpEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXJNjpEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXJdjpEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXJtjpEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXJ9jpEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AToXKNjpEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AToXKdjpEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AToXKtjpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AToXK9jpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXLNjpEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXLdjpEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AToXLtjpEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AToXL9jpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AToXMNjpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXMdjpEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXMtjpEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AToXM9jpEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AToXNNjpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AToXNdjpEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXNtjpEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXN9jpEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_uMYd4NjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXIdjpEeKQqZMBCFd2Uw" x="12" y="462" height="67"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_di3-ENkhEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-EtkhEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-E9khEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-FNkhEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-FdkhEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-FtkhEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-F9khEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_di3-GNkhEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_di3-GdkhEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_di3-GtkhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_di3-G9khEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_di3-HNkhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-HdkhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_di3-HtkhEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_di3-H9khEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_di3-INkhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_di3-IdkhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-ItkhEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_di-EsNkhEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_di-EsdkhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_di-EstkhEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_di-Es9khEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di-EtNkhEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-EdkhEeKQqZMBCFd2Uw" x="660" y="384"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zYYY0NqBEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefcNqBEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefcdqBEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefctqBEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefc9qBEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefdNqBEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefddqBEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zYfGgNqBEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGgdqBEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGgtqBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGg9qBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGhNqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGhdqBEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGhtqBEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGh9qBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGiNqBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGidqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGitqBEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGi9qBEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGjNqBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGjdqBEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGjtqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGj9qBEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_zYGE8NqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYYY0dqBEeKQqZMBCFd2Uw" x="48" y="588"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_33RakNt0EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33Raktt0EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Rak9t0EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33RalNt0EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Raldt0EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33Raltt0EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Ral9t0EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_33RamNt0EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_33Ramdt0EeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_33Ramtt0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_33Ram9t0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_33RanNt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Randt0EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_33Rantt0EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_33Ran9t0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_33RaoNt0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_33Raodt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Raott0EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_33Rao9t0EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_33RapNt0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_33Rapdt0EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_33Raptt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Rap9t0EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Rakdt0EeKQqZMBCFd2Uw" x="174" y="-12" width="217" height="97"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IPOrANt2EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrAtt2EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrA9t2EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrBNt2EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrBdt2EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrBtt2EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrB9t2EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IPOrCNt2EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrCdt2EeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrCtt2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrC9t2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrDNt2EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrDdt2EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrDtt2EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrD9t2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrENt2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrEdt2EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrEtt2EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrE9t2EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrFNt2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrFdt2EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrFtt2EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrF9t2EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_IOwJ4Nt2EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrAdt2EeKQqZMBCFd2Uw" x="312" y="588" width="193"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_q9LiYO3uEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpAO3uEeKwLp35IbAIig" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpAe3uEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpAu3uEeKwLp35IbAIig" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpA-3uEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpBO3uEeKwLp35IbAIig" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpBe3uEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q9RpBu3uEeKwLp35IbAIig" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpB-3uEeKwLp35IbAIig" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpCO3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpCe3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpCu3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpC-3uEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpDO3uEeKwLp35IbAIig" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpDe3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpDu3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpD-3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpEO3uEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpEe3uEeKwLp35IbAIig" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpEu3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpE-3uEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpFO3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpFe3uEeKwLp35IbAIig"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_q85OgO3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9LiYe3uEeKwLp35IbAIig" x="316" y="760"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-jCeEAw_EeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeEgw_EeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeEww_EeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeFAw_EeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeFQw_EeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeFgw_EeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeFww_EeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-jCeGAw_EeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeGQw_EeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeGgw_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeGww_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeHAw_EeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeHQw_EeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeHgw_EeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeHww_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeIAw_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeIQw_EeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeIgw_EeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeIww_EeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeJAw_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeJQw_EeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeJgw_EeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeJww_EeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_T5we4AkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeEQw_EeOjX-JbGFEH7w" x="312" y="894" width="229"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_mmXS0bcqEeK8_t7Rpq6ZJA"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_0PIOkLcqEeK8_t7Rpq6ZJA" type="4002" source="_yPB_ELcqEeK8_t7Rpq6ZJA" target="_xbaJwLcqEeK8_t7Rpq6ZJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0PIOk7cqEeK8_t7Rpq6ZJA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0PIOlLcqEeK8_t7Rpq6ZJA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0PIOkbcqEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_0NyKwLcqEeK8_t7Rpq6ZJA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0PIOkrcqEeK8_t7Rpq6ZJA" points="[-1, -6, 16, 197]$[-15, -195, 2, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0REIQLcqEeK8_t7Rpq6ZJA" id="(0.38,0.06)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0REIQbcqEeK8_t7Rpq6ZJA" id="(0.47,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jWjy8Na7EeKPiuTfpuvqHA" type="4001" source="_yPB_ELcqEeK8_t7Rpq6ZJA" target="_gUHVoNa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy89a7EeKPiuTfpuvqHA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy9Na7EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy9da7EeKPiuTfpuvqHA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy9ta7EeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy99a7EeKPiuTfpuvqHA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy-Na7EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy-da7EeKPiuTfpuvqHA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy-ta7EeKPiuTfpuvqHA" x="-25" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy-9a7EeKPiuTfpuvqHA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy_Na7EeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWjy_da7EeKPiuTfpuvqHA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy_ta7EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_jWjy8da7EeKPiuTfpuvqHA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_jWQ4ANa7EeKPiuTfpuvqHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jWjy8ta7EeKPiuTfpuvqHA" points="[16, 0, -128, 0]$[133, -1, -11, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jW2t4Na7EeKPiuTfpuvqHA" id="(0.8620689655172413,0.38)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jW2t4da7EeKPiuTfpuvqHA" id="(0.08,0.11253196930946291)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_akk1ANjhEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_gUHVoNa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1A9jhEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1BNjhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1BdjhEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1BtjhEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1B9jhEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1CNjhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1CdjhEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1CtjhEeKQqZMBCFd2Uw" x="-25" y="22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1C9jhEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1DNjhEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_akk1DdjhEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1DtjhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_akk1AdjhEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_akGT4NjhEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_akk1AtjhEeKQqZMBCFd2Uw" points="[7, 15, -46, -102]$[50, 115, -3, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_akxCQNjhEeKQqZMBCFd2Uw" id="(0.9759036144578314,0.15577889447236182)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_akxCQdjhEeKQqZMBCFd2Uw" id="(0.11,0.4194373401534527)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bwi0sNjoEeKQqZMBCFd2Uw" type="4002" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_Y0q5cNjoEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bwi0s9joEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bwi0tNjoEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bwi0sdjoEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_bwKaMNjoEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bwi0stjoEeKQqZMBCFd2Uw" points="[2, -5, 0, 49]$[-1, -46, -3, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bwo7UNjoEeKQqZMBCFd2Uw" id="(0.42771084337349397,0.04807692307692308)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bwo7UdjoEeKQqZMBCFd2Uw" id="(0.43,0.8805970149253731)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_DY7UINjpEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_AToXINjpEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DY7UI9jpEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UJNjpEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DY7UJdjpEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UJtjpEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DY7UJ9jpEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UKNjpEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DZBawNjpEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBawdjpEeKQqZMBCFd2Uw" x="25" y="59"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DZBawtjpEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBaw9jpEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DZBaxNjpEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBaxdjpEeKQqZMBCFd2Uw" x="-20" y="-19"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_DY7UIdjpEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_DYi5oNjpEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DY7UItjpEeKQqZMBCFd2Uw" points="[-6, 7, 55, -70]$[-61, 77, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZHhYNjpEeKQqZMBCFd2Uw" id="(0.19879518072289157,0.9326923076923077)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZHhYdjpEeKQqZMBCFd2Uw" id="(0.5483870967741935,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_EE7egNjpEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_8O26INjoEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EE7eg9jpEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EE7ehNjpEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EE7ehdjpEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EE7ehtjpEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EE7eh9jpEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlINjpEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EFBlIdjpEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlItjpEeKQqZMBCFd2Uw" x="-35" y="33"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EFBlI9jpEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlJNjpEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EFBlJdjpEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlJtjpEeKQqZMBCFd2Uw" x="16" y="-48"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_EE7egdjpEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_EEjEANjpEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EE7egtjpEeKQqZMBCFd2Uw" points="[3, 8, -32, -76]$[36, 78, 1, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EFHrwNjpEeKQqZMBCFd2Uw" id="(0.6867469879518072,0.9230769230769231)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EFHrwdjpEeKQqZMBCFd2Uw" id="(0.5416666666666666,0.08955223880597014)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_hRFVMNkhEeKQqZMBCFd2Uw" type="4001" source="_gUHVoNa7EeKPiuTfpuvqHA" target="_di3-ENkhEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVM9khEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVNNkhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVNdkhEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVNtkhEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVN9khEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVONkhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVOdkhEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVOtkhEeKQqZMBCFd2Uw" x="-41" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVO9khEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVPNkhEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hRFVPdkhEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVPtkhEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_hRFVMdkhEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_hQam0NkhEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hRFVMtkhEeKQqZMBCFd2Uw" points="[9, -1, -134, 0]$[132, -6, -11, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hRLb0NkhEeKQqZMBCFd2Uw" id="(0.91,0.8593350383631714)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hRLb0dkhEeKQqZMBCFd2Uw" id="(0.11,0.35)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5sUcENqBEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_zYYY0NqBEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcE9qBEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcFNqBEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcFdqBEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcFtqBEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcF9qBEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcGNqBEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcGdqBEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcGtqBEeKQqZMBCFd2Uw" x="9" y="104"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5sUcG9qBEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5saisNqBEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5saisdqBEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5saistqBEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5sUcEdqBEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_5r8BkNqBEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5sUcEtqBEeKQqZMBCFd2Uw" points="[0, 13, 28, -195]$[0, 168, 28, -40]$[-17, 192, 11, -16]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5sgpUNqBEeKQqZMBCFd2Uw" id="(0.27710843373493976,0.9346733668341709)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5sgpUdqBEeKQqZMBCFd2Uw" id="(0.8734177215189873,0.16)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_T0VGwNqCEeKQqZMBCFd2Uw" type="4001" source="_zYYY0NqBEeKQqZMBCFd2Uw" target="_eO9nANa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGw9qCEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGxNqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGxdqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGxtqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGx9qCEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGyNqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGydqCEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGytqCEeKQqZMBCFd2Uw" x="3" y="78"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGy9qCEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGzNqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T0VGzdqCEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGztqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_T0VGwdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_Tz2loNqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_T0VGwtqCEeKQqZMBCFd2Uw" points="[1, 9, 0, -64]$[-1, 65, -2, -8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0bNYNqCEeKQqZMBCFd2Uw" id="(0.5063291139240507,0.91)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0bNYdqCEeKQqZMBCFd2Uw" id="(0.42857142857142855,0.08)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__sH28Nt0EeKQqZMBCFd2Uw" type="4001" source="_33RakNt0EeKQqZMBCFd2Uw" target="_DOnbMNjhEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH289t0EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH29Nt0EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH29dt0EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH29tt0EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH299t0EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2-Nt0EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH2-dt0EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2-tt0EeKQqZMBCFd2Uw" x="-1" y="58"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH2-9t0EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2_Nt0EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__sH2_dt0EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2_tt0EeKQqZMBCFd2Uw" x="-1" y="-35"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__sH28dt0EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#__rpV0Nt0EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__sH28tt0EeKQqZMBCFd2Uw" points="[-9, 4, 0, -131]$[-9, 129, 0, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__sN9kNt0EeKQqZMBCFd2Uw" id="(0.4147465437788018,0.9587628865979382)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__sN9kdt0EeKQqZMBCFd2Uw" id="(0.5240963855421686,0.057692307692307696)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_wRtFcNt2EeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_IPOrANt2EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFc9t2EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFdNt2EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFddt2EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFdtt2EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFd9t2EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFeNt2EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFedt2EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFett2EeKQqZMBCFd2Uw" x="22" y="-39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFe9t2EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFfNt2EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRtFfdt2EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFftt2EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_wRtFcdt2EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_wROkUNt2EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wRtFctt2EeKQqZMBCFd2Uw" points="[17, 96, -39, -213]$[46, 304, -10, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wRzMENt2EeKQqZMBCFd2Uw" id="(0.40963855421686746,0.07692307692307693)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wRzMEdt2EeKQqZMBCFd2Uw" id="(0.05181347150259067,0.11)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3GnZYO3uEeKwLp35IbAIig" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_q9LiYO3uEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZY-3uEeKwLp35IbAIig" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZZO3uEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZZe3uEeKwLp35IbAIig" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZZu3uEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZZ-3uEeKwLp35IbAIig" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZaO3uEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZae3uEeKwLp35IbAIig" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZau3uEeKwLp35IbAIig" x="72" y="-98"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZa-3uEeKwLp35IbAIig" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZbO3uEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3GnZbe3uEeKwLp35IbAIig" visible="false" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZbu3uEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3GnZYe3uEeKwLp35IbAIig" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_3GHqIO3uEeKwLp35IbAIig"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3GnZYu3uEeKwLp35IbAIig" points="[3, 22, -77, -351]$[47, 321, -33, -52]$[80, 373, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3GzmoO3uEeKwLp35IbAIig" id="(0.4759036144578313,0.8894472361809045)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Gzmoe3uEeKwLp35IbAIig" id="(0.0738255033557047,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FETysAxAEeOjX-JbGFEH7w" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_-jCeEAw_EeOjX-JbGFEH7w" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVA0AxAEeOjX-JbGFEH7w" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVA0QxAEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVn4AxAEeOjX-JbGFEH7w" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn4QxAEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVn4gxAEeOjX-JbGFEH7w" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn4wxAEeOjX-JbGFEH7w" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVn5AxAEeOjX-JbGFEH7w" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn5QxAEeOjX-JbGFEH7w" x="70" y="-137"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEVn5gxAEeOjX-JbGFEH7w" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn5wxAEeOjX-JbGFEH7w" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FEWO8AxAEeOjX-JbGFEH7w" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FEWO8QxAEeOjX-JbGFEH7w" x="52" y="29"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_FETysQxAEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_FDpEUAxAEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FETysgxAEeOjX-JbGFEH7w" points="[0, 5, -99, -495]$[19, 112, -80, -388]$[67, 472, -32, -28]$[87, 490, -12, -10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FEh1IAxAEeOjX-JbGFEH7w" id="(0.35542168674698793,0.9748743718592965)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FEh1IQxAEeOjX-JbGFEH7w" id="(0.06422018348623854,0.1)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_y-BQANa7EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="LayersExpression" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_zpKewNa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKewta7EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKew9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKexNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKexda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKexta7EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKex9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zpKeyNa7EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zpKeyda7EeKPiuTfpuvqHA" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_hEYzQNjwEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_ctvjINjwEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hEYzQdjwEeKQqZMBCFd2Uw" x="58" y="16"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hEe54NjwEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_ct7wYNjwEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hEe54djwEeKQqZMBCFd2Uw" x="58" y="16"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zpKeyta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zpKey9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKezNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKezda7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zpKezta7EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zpKez9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zpKe0Na7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKe0da7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKe0ta7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zpKe09a7EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zpKe1Na7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zpKe1da7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKe1ta7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKe19a7EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKewda7EeKPiuTfpuvqHA" x="6" y="120" height="133"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_52F7ENa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7Eta7EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7E9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7FNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7Fda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7Fta7EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7F9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_52F7GNa7EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_52F7Gda7EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_52F7Gta7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_52F7G9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7HNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Hda7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_52F7Hta7EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_52F7H9a7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_52F7INa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7Ida7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Ita7EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_52F7I9a7EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_52F7JNa7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_52F7Jda7EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7Jta7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7J9a7EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Eda7EeKPiuTfpuvqHA" x="414" y="330" height="115"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AjwF4Na8EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF4ta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF49a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF5Na8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF5da8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF5ta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF59a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AjwF6Na8EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF6da8EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF6ta8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF69a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF7Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF7da8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF7ta8EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF79a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF8Na8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF8da8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF8ta8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF89a8EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF9Na8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF9da8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF9ta8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF99a8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF4da8EeKPiuTfpuvqHA" x="747" y="349"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T7HNENbFEeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNEtbFEeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNE9bFEeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNFNbFEeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNFdbFEeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNFtbFEeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNF9bFEeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T7HNGNbFEeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7HNGdbFEeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7HNGtbFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T7HNG9bFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T7HNHNbFEeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7HNHdbFEeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7HNHtbFEeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7HNH9bFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T7QXANbFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T7QXAdbFEeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7QXAtbFEeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7QXA9bFEeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7QXBNbFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T7QXBdbFEeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T7QXBtbFEeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7QXB9bFEeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7HNEdbFEeKPiuTfpuvqHA" x="744" y="228"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vMekkNjKEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrMNjKEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrMdjKEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrMtjKEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrM9jKEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrNNjKEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrNdjKEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vMkrNtjKEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrN9jKEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_1CU9oNjKEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_1B8jINjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1CU9odjKEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4gTgYNjKEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_4f0_QNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4gTgYdjKEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrONjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrOdjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrOtjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrO9jKEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrPNjKEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrPdjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrPtjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrP9jKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrQNjKEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrQdjKEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrQtjKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrQ9jKEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrRNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrRdjKEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_vMMQsNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMekkdjKEeKgkM6XJF9t4A" x="732" y="474" width="203"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9IsT4NjiEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT4tjiEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IsT49jiEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT5NjiEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IsT5djiEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT5tjiEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IyagNjiEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9IyagdjiEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9IyagtjiEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_R8Lv8NjuEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_AWx_gNjuEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R8Lv8djuEeKQqZMBCFd2Uw" x="47" y="9"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_R8Lv8tjuEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_AW-MwNjuEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R8Lv89juEeKQqZMBCFd2Uw" x="47" y="9"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mCypIAxEEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B5cxgAxGEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkAxGEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkQxGEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EAttribute"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkgxGEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkwxGEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYlAxGEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="layers.uml#_mCUIAAxEEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mCypIQxEEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qa7HAAxEEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_qaozIAxEEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qa7HAQxEEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9Iyag9jiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9IyahNjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9IyahdjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IyahtjiEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9Iyah9jiEeKQqZMBCFd2Uw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_VdqgMO7HEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVUO7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEO7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_VdSFsO7HEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VdqgMe7HEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fOx_gO7IEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVUu7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEe7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_xfz8UO7HEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fOx_ge7IEeK0p4PkXjd-_Q" x="93" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fO4GIO7IEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVVO7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEu7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_x2PfUO7HEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fO4GIe7IEeK0p4PkXjd-_Q" x="93" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yKXQQPMcEeKJ5-vFCuMpLA" type="3013" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Do9OEPMdEeKJ5-vFCuMpLA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Do9OEfMdEeKJ5-vFCuMpLA" key="CustomAppearance_MaskValue" value="776"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_yI1mQPMcEeKJ5-vFCuMpLA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yKXQQfMcEeKJ5-vFCuMpLA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9IyaiNjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9IyaidjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9IyaitjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Iyai9jiEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9IyajNjiEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9IyajdjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9IyajtjiEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9Iyaj9jiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IyakNjiEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_9IaAANjiEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IsT4djiEeKQqZMBCFd2Uw" x="252" y="108" width="475" height="184"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Hoi98NjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi98tjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi989jjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi99NjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi99djjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi99tjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi999jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Hoi9-NjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi9-djjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi9-tjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi9-9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi9_NjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi9_djjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi9_tjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi9_9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi-ANjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi-AdjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi-AtjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi-A9jjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi-BNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi-BdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi-BtjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi-B9jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_HoKjcNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi98djjEeKQqZMBCFd2Uw" x="144" y="330" width="115"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WunlMNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr0NjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr0djjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr0tjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr09jjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr1NjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr1djjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wutr1tjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr19jjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr2NjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr2djjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr2tjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr29jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr3NjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr3djjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr3tjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr39jjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr4NjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr4djjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr4tjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr49jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr5NjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr5djjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_WuVRUNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WunlMdjjEeKQqZMBCFd2Uw" x="240" y="504" width="157"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gqpJcNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQENjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQEdjjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQEtjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQE9jjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQFNjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQFdjjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gqvQFtjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQF9jjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQGNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQGdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQGtjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQG9jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQHNjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQHdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQHtjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQH9jjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQINjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQIdjjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQItjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQI9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQJNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQJdjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_gqW1kNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqpJcdjjEeKQqZMBCFd2Uw" x="366" y="642"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wpUMoNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMotjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMo9jjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMpNjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMpdjjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMptjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMp9jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wpUMqNjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMqdjjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMqtjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMq9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMrNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMrdjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMrtjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMr9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMsNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMsdjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMstjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMs9jjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMtNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMtdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMttjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMt9jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_wpB4wNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUModjjEeKQqZMBCFd2Uw" x="156" y="642" width="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1xfAUNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xfnYNjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xfnYdjjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xgOcNjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xgOcdjjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xgOctjjEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xgOc9jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1xgOdNjjEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOddjjEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOdtjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOd9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOeNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOedjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOetjjEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOe9jjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOfNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOfdjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOftjjEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOf9jjEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOgNjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOgdjjEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOgtjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOg9jjEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_1xJCENjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xfAUdjjEeKQqZMBCFd2Uw" x="6" y="504" width="163"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zT_qYNt5EeKwptaAAanMDg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qYtt5EeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qY9t5EeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qZNt5EeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qZdt5EeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qZtt5EeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qZ9t5EeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zT_qaNt5EeKwptaAAanMDg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qadt5EeKwptaAAanMDg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qatt5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qa9t5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qbNt5EeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qbdt5EeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qbtt5EeKwptaAAanMDg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qb9t5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qcNt5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qcdt5EeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qctt5EeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qc9t5EeKwptaAAanMDg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qdNt5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qddt5EeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qdtt5EeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qd9t5EeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qYdt5EeKwptaAAanMDg" x="234" y="24" height="45"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_z-jdcOHTEeKCZbxNW-U3VQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jdcuHTEeKCZbxNW-U3VQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jdc-HTEeKCZbxNW-U3VQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jddOHTEeKCZbxNW-U3VQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jddeHTEeKCZbxNW-U3VQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jdduHTEeKCZbxNW-U3VQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jdd-HTEeKCZbxNW-U3VQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z-jdeOHTEeKCZbxNW-U3VQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdeeHTEeKCZbxNW-U3VQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_BnajsBZ1EeOZwp016gnCFQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_Bm93wBZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BnajsRZ1EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FqR8MBZ1EeOZwp016gnCFQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_Fp_BQBZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FqR8MRZ1EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NA_bwFCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_NAa0AFCkEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NA_bwVCkEeO_9LQ4jZWm3w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_X_qIwVCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_X_qIwFCkEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_qIwlCkEeO_9LQ4jZWm3w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uJr68VCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_uJr68FCkEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uJr68lCkEeO_9LQ4jZWm3w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_y220sVCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_y220sFCkEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y220slCkEeO_9LQ4jZWm3w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_sPbYQVClEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_sPbYQFClEeO_9LQ4jZWm3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sPbYQlClEeO_9LQ4jZWm3w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdeuHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z-jde-HTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdfOHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdfeHTEeKCZbxNW-U3VQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdfuHTEeKCZbxNW-U3VQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_kKAqgBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_kI0XsBZ0EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kKAqgRZ0EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lphVcBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_lpOagBZ0EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lphVcRZ0EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pKeTsBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_pKKxsBZ0EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pKeTsRZ0EeOZwp016gnCFQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdf-HTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z-jdgOHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdgeHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdguHTEeKCZbxNW-U3VQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdg-HTEeKCZbxNW-U3VQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdhOHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z-jdheHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdhuHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdh-HTEeKCZbxNW-U3VQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_z9aN8OHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdceHTEeKCZbxNW-U3VQ" x="558" y="642"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__1eoIOHTEeKCZbxNW-U3VQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoIuHTEeKCZbxNW-U3VQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoI-HTEeKCZbxNW-U3VQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoJOHTEeKCZbxNW-U3VQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoJeHTEeKCZbxNW-U3VQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoJuHTEeKCZbxNW-U3VQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoJ-HTEeKCZbxNW-U3VQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__1eoKOHTEeKCZbxNW-U3VQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__1eoKeHTEeKCZbxNW-U3VQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__1eoKuHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__1eoK-HTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoLOHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoLeHTEeKCZbxNW-U3VQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__1eoLuHTEeKCZbxNW-U3VQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__1eoL-HTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__1eoMOHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoMeHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoMuHTEeKCZbxNW-U3VQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__1eoM-HTEeKCZbxNW-U3VQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__1eoNOHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__1eoNeHTEeKCZbxNW-U3VQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoNuHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoN-HTEeKCZbxNW-U3VQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#__1GNoOHTEeKCZbxNW-U3VQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoIeHTEeKCZbxNW-U3VQ" x="984" y="642"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_y-BQAda7EeKPiuTfpuvqHA"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_5ZBIENa8EeKPiuTfpuvqHA" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_AjwF4Na8EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSANa8EeKPiuTfpuvqHA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSAda8EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSAta8EeKPiuTfpuvqHA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSA9a8EeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSBNa8EeKPiuTfpuvqHA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSBda8EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSBta8EeKPiuTfpuvqHA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSB9a8EeKPiuTfpuvqHA" x="-35" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSCNa8EeKPiuTfpuvqHA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSCda8EeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSCta8EeKPiuTfpuvqHA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSC9a8EeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5ZBIEda8EeKPiuTfpuvqHA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_5YuNINa8EeKPiuTfpuvqHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5ZBIEta8EeKPiuTfpuvqHA" points="[7, 4, -241, 0]$[240, 4, -8, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ZUDANa8EeKPiuTfpuvqHA" id="(0.95,0.3941908713692946)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ZUDAda8EeKPiuTfpuvqHA" id="(0.03,0.73)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_cH3WoNbGEeKPiuTfpuvqHA" type="4001" source="_zpKewNa7EeKPiuTfpuvqHA" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wo9bGEeKPiuTfpuvqHA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WpNbGEeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3WpdbGEeKPiuTfpuvqHA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WptbGEeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wp9bGEeKPiuTfpuvqHA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WqNbGEeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3WqdbGEeKPiuTfpuvqHA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WqtbGEeKPiuTfpuvqHA" x="-48" y="10"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wq9bGEeKPiuTfpuvqHA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WrNbGEeKPiuTfpuvqHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cH3WrdbGEeKPiuTfpuvqHA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WrtbGEeKPiuTfpuvqHA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_cH3WodbGEeKPiuTfpuvqHA" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_cHkbsNbGEeKPiuTfpuvqHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cH3WotbGEeKPiuTfpuvqHA" points="[5, -6, -94, 0]$[97, -7, -2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cIBHoNbGEeKPiuTfpuvqHA" id="(0.95,0.49)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cIBHodbGEeKPiuTfpuvqHA" id="(0.022900763358778626,0.31756756756756754)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_A2AAANjLEeKgkM6XJF9t4A" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_vMekkNjKEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2AAA9jLEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2AABNjLEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2AABdjLEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2AABtjLEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GGoNjLEeKgkM6XJF9t4A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGodjLEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GGotjLEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGo9jLEeKgkM6XJF9t4A" x="-52" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GGpNjLEeKgkM6XJF9t4A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGpdjLEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A2GGptjLEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGp9jLEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_A2AAAdjLEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_A1nlgNjLEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_A2AAAtjLEeKgkM6XJF9t4A" points="[4, 2, -221, 0]$[222, 1, -3, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2MNQNjLEeKgkM6XJF9t4A" id="(0.96,0.820627802690583)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2MNQdjLEeKgkM6XJF9t4A" id="(0.014778325123152709,0.47580645161290325)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__u7_YNjMEeKgkM6XJF9t4A" type="4002" source="_52F7ENa7EeKPiuTfpuvqHA" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="__vCGANjMEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__vCGAdjMEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__u7_YdjMEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#__ujk4NjMEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__u7_YtjMEeKgkM6XJF9t4A" points="[25, -12, -69, 32]$[88, -42, -6, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__vCGAtjMEeKgkM6XJF9t4A" id="(0.62,0.053811659192825115)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__vCGA9jMEeKgkM6XJF9t4A" id="(0.08396946564885496,0.59)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LBg6UNjiEeKQqZMBCFd2Uw" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_T7HNENbFEeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6U9jiEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6VNjiEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6VdjiEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6VtjiEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6V9jiEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6WNjiEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6WdjiEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6WtjiEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6W9jiEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6XNjiEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBg6XdjiEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6XtjiEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LBg6UdjiEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_LBIf0NjiEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LBg6UtjiEeKQqZMBCFd2Uw" points="[4, -1, -236, 26]$[234, -23, -6, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBtHkNjiEeKQqZMBCFd2Uw" id="(0.96,0.05394190871369295)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBtHkdjiEeKQqZMBCFd2Uw" id="(0.05714285714285714,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OJgwkNjjEeKQqZMBCFd2Uw" type="4002" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OJgwk9jjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OJgwlNjjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OJgwkdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_OJCPcNjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OJgwktjjEeKQqZMBCFd2Uw" points="[2, -2, -91, 72]$[90, -64, -3, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJm3MNjjEeKQqZMBCFd2Uw" id="(0.6,0.02)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJm3MdjjEeKQqZMBCFd2Uw" id="(0.4122137404580153,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zMPcYNjjEeKQqZMBCFd2Uw" type="4002" source="_wpUMoNjjEeKQqZMBCFd2Uw" target="_WunlMNjjEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zMPcY9jjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zMPcZNjjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_zMPcYdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_zL9IgNjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zMPcYtjjEeKQqZMBCFd2Uw" points="[12, -9, -58, 43]$[67, -47, -3, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zMVjANjjEeKQqZMBCFd2Uw" id="(0.4319526627218935,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zMVjAdjjEeKQqZMBCFd2Uw" id="(0.37579617834394907,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zpCtINjjEeKQqZMBCFd2Uw" type="4002" source="_gqpJcNjjEeKQqZMBCFd2Uw" target="_WunlMNjjEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zpIzwNjjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zpIzwdjjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_zpCtIdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_zoqSoNjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zpCtItjjEeKQqZMBCFd2Uw" points="[-16, -13, 53, 45]$[-65, -51, 4, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpIzwtjjEeKQqZMBCFd2Uw" id="(0.4262295081967213,0.13)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpIzw9jjEeKQqZMBCFd2Uw" id="(0.6942675159235668,0.93)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0mKcsNjjEeKQqZMBCFd2Uw" type="4002" source="_WunlMNjjEeKQqZMBCFd2Uw" target="_Hoi98NjjEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0mLq0NjjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0mLq0djjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0mKcsdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_0lwNANjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0mKcstjjEeKQqZMBCFd2Uw" points="[-19, -17, 88, 82]$[-105, -91, 2, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0mOuINjjEeKQqZMBCFd2Uw" id="(0.5031847133757962,0.17)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0mPVMNjjEeKQqZMBCFd2Uw" id="(0.591304347826087,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4cX5QNjjEeKQqZMBCFd2Uw" type="4002" source="_1xfAUNjjEeKQqZMBCFd2Uw" target="_Hoi98NjjEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4cX5Q9jjEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4cX5RNjjEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4cX5QdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_4b_ewNjjEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4cX5QtjjEeKQqZMBCFd2Uw" points="[0, 0, -98, 79]$[96, -74, -2, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4cd_4NjjEeKQqZMBCFd2Uw" id="(0.49693251533742333,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4cd_4djjEeKQqZMBCFd2Uw" id="(0.3565217391304348,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_endM4NjnEeKQqZMBCFd2Uw" type="4001" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM49jnEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM5NjnEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM5djnEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM5tjnEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM59jnEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM6NjnEeKQqZMBCFd2Uw" x="-34" y="-41"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM6djnEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM6tjnEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM69jnEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM7NjnEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_endM7djnEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_endM7tjnEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_endM4djnEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_em-rwNjnEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_endM4tjnEeKQqZMBCFd2Uw" points="[0, -4, -89, 78]$[0, -76, -89, 6]$[87, -76, -2, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_enjTgNjnEeKQqZMBCFd2Uw" id="(0.1826086956521739,0.04)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_enjTgdjnEeKQqZMBCFd2Uw" id="(0.015267175572519083,0.84)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_18hy4Nt5EeKwptaAAanMDg" type="4002" source="_9IsT4NjiEeKQqZMBCFd2Uw" target="_zT_qYNt5EeKwptaAAanMDg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_18hy49t5EeKwptaAAanMDg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_18hy5Nt5EeKwptaAAanMDg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_18hy4dt5EeKwptaAAanMDg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_18JYYNt5EeKwptaAAanMDg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_18hy4tt5EeKwptaAAanMDg" points="[-3, -5, 0, 82]$[-11, -80, -8, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_18n5gNt5EeKwptaAAanMDg" id="(0.5114503816793893,0.033783783783783786)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_18n5gdt5EeKwptaAAanMDg" id="(0.41624365482233505,0.8444444444444444)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_R9IxEOHUEeKCZbxNW-U3VQ" type="4002" source="_z-jdcOHTEeKCZbxNW-U3VQ" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_R9IxE-HUEeKCZbxNW-U3VQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R9IxFOHUEeKCZbxNW-U3VQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_R9IxEeHUEeKCZbxNW-U3VQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_R8qP8OHUEeKCZbxNW-U3VQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_R9IxEuHUEeKCZbxNW-U3VQ" points="[-5, -9, 106, 209]$[-109, -206, 2, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R9O3sOHUEeKCZbxNW-U3VQ" id="(0.25,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R9O3seHUEeKCZbxNW-U3VQ" id="(0.58,0.8956521739130435)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_anKh8OHUEeKCZbxNW-U3VQ" type="4002" source="__1eoIOHTEeKCZbxNW-U3VQ" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_anQokOHUEeKCZbxNW-U3VQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_anQokeHUEeKCZbxNW-U3VQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_anKh8eHUEeKCZbxNW-U3VQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_am4OEOHUEeKCZbxNW-U3VQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_anKh8uHUEeKCZbxNW-U3VQ" points="[-14, -11, 258, 211]$[-263, -208, 9, 14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anQokuHUEeKCZbxNW-U3VQ" id="(0.32,0.11)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anQok-HUEeKCZbxNW-U3VQ" id="(0.78,0.8782608695652174)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_C_qusNa8EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="property values" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_EH9zgNa8EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zgta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zg9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zhNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zhda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zhta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zh9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EH9ziNa8EeKPiuTfpuvqHA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zida8EeKPiuTfpuvqHA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zita8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zi9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zjNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zjda8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zjta8EeKPiuTfpuvqHA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zj9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zkNa8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zkda8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zkta8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zk9a8EeKPiuTfpuvqHA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zlNa8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zlda8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zlta8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zl9a8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zgda8EeKPiuTfpuvqHA" x="168" y="252" width="130"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VpXS4O8UEeK0p4PkXjd-_Q" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpYhAO8UEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZIEO8UEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpZIEe8UEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZIEu8UEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpZIE-8UEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZvIO8UEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VpZvIe8UEeK0p4PkXjd-_Q" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VpZvIu8UEeK0p4PkXjd-_Q" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VpZvI-8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VpZvJO8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VpZvJe8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpZvJu8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VpaWMO8UEeK0p4PkXjd-_Q" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VpaWMe8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VpaWMu8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VpaWM-8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpaWNO8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpXS4e8UEeK0p4PkXjd-_Q" x="384" y="66" width="241"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XZo9sO8UEeK0p4PkXjd-_Q" type="2004" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkwO8UEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkwe8UEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkwu8UEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkw-8UEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkxO8UEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkxe8UEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZENCEO8UEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENCEe8UEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIO8UEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EClass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIe8UEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIu8UEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpI-8UEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XZpkxu8UEeK0p4PkXjd-_Q" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XZpkx-8UEeK0p4PkXjd-_Q" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XZpkyO8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XZpkye8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL0O8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL0e8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XZqL0u8UEeK0p4PkXjd-_Q" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_uYj-QO8ZEeK0p4PkXjd-_Q" type="3007" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1Bdk4O8ZEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Bdk4e8ZEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="776"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="layers.uml#_uYMx4O8ZEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uYj-Qe8ZEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XZqL0-8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XZqL1O8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL1e8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL1u8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XZqL1-8UEeK0p4PkXjd-_Q" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XZqL2O8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XZqL2e8UEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL2u8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL2-8UEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Interface" href="layers.uml#_XZJOcO8UEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZo9se8UEeK0p4PkXjd-_Q" x="384" y="234" width="259"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_C_qusda8EeKPiuTfpuvqHA"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_g3VDUO8YEeK0p4PkXjd-_Q" type="4003" source="_EH9zgNa8EeKPiuTfpuvqHA" target="_XZo9sO8UEeK0p4PkXjd-_Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_g3WRcO8YEeK0p4PkXjd-_Q" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g3WRce8YEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g3WRcu8YEeK0p4PkXjd-_Q" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g3WRc-8YEeK0p4PkXjd-_Q" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_g3VDUe8YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="layers.uml#_g2QFQO8YEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g3VDUu8YEeK0p4PkXjd-_Q" points="[8, -7, -96, 0]$[94, -10, -10, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g3bJ8O8YEeK0p4PkXjd-_Q" id="(0.9384615384615385,0.31)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g3bJ8e8YEeK0p4PkXjd-_Q" id="(0.04219409282700422,0.3157894736842105)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_QLWs4Na8EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="datatypes" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_RJ_fYNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fYta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fY9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fZNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fZda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fZta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fZ9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RJ_faNa8EeKPiuTfpuvqHA" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RKJQYNa8EeKPiuTfpuvqHA" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RKJQYda8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RKJQYta8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RKJQY9a8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RKJQZNa8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RKJQZda8EeKPiuTfpuvqHA" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RKJQZta8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RKJQZ9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RKJQaNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RKJQada8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RJ_fYda8EeKPiuTfpuvqHA" x="36" y="30"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SukQgNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQgta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQg9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQhNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQhda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQhta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQh9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wy62w9a8EeKPiuTfpuvqHA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xNa8EeKPiuTfpuvqHA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xda8EeKPiuTfpuvqHA" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xta8EeKPiuTfpuvqHA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62x9a8EeKPiuTfpuvqHA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62yNa8EeKPiuTfpuvqHA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SukQiNa8EeKPiuTfpuvqHA" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SukQida8EeKPiuTfpuvqHA" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SukQita8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SukQi9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SukQjNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQjda8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SukQjta8EeKPiuTfpuvqHA" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SukQj9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SukQkNa8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SukQkda8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQkta8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_SuHkkNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQgda8EeKPiuTfpuvqHA" x="192" y="30"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Tq9nUNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nUta8EeKPiuTfpuvqHA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nU9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nVNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nVda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nVta8EeKPiuTfpuvqHA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nV9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZD0iYNa8EeKPiuTfpuvqHA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iYda8EeKPiuTfpuvqHA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iYta8EeKPiuTfpuvqHA" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iY9a8EeKPiuTfpuvqHA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iZNa8EeKPiuTfpuvqHA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iZda8EeKPiuTfpuvqHA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Tq9nWNa8EeKPiuTfpuvqHA" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Tq9nWda8EeKPiuTfpuvqHA" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Tq9nWta8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Tq9nW9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Tq9nXNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nXda8EeKPiuTfpuvqHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Tq9nXta8EeKPiuTfpuvqHA" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Tq9nX9a8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Tq9nYNa8EeKPiuTfpuvqHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Tq9nYda8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nYta8EeKPiuTfpuvqHA"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_TqqsYNa8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nUda8EeKPiuTfpuvqHA" x="348" y="30"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_c1uu0NheEeKgkM6XJF9t4A" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu0theEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu09heEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu1NheEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu1dheEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu1theEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu19heEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_g91zsNheEeKgkM6XJF9t4A" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zsdheEeKgkM6XJF9t4A" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zstheEeKgkM6XJF9t4A" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zs9heEeKgkM6XJF9t4A" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91ztNheEeKgkM6XJF9t4A" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91ztdheEeKgkM6XJF9t4A" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_c1uu2NheEeKgkM6XJF9t4A" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_c1uu2dheEeKgkM6XJF9t4A" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_c1uu2theEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_c1uu29heEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_c1uu3NheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu3dheEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_c1uu3theEeKgkM6XJF9t4A" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_c1uu39heEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_c1uu4NheEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_c1uu4dheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu4theEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_c1QNsNheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu0dheEeKgkM6XJF9t4A" x="36" y="198"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lV_fsNheEeKgkM6XJF9t4A" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_fstheEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_fs9heEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_ftNheEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_ftdheEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_fttheEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_ft9heEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qH1eENheEeKgkM6XJF9t4A" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eEdheEeKgkM6XJF9t4A" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eEtheEeKgkM6XJF9t4A" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eE9heEeKgkM6XJF9t4A" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eFNheEeKgkM6XJF9t4A" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eFdheEeKgkM6XJF9t4A" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lV_fuNheEeKgkM6XJF9t4A" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_lV_fudheEeKgkM6XJF9t4A" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lV_futheEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_lV_fu9heEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_lV_fvNheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fvdheEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_lV_fvtheEeKgkM6XJF9t4A" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lV_fv9heEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_lV_fwNheEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_lV_fwdheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fwtheEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_lVnFMNheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fsdheEeKgkM6XJF9t4A" x="240" y="198" height="103"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QfRJAO7GEeK0p4PkXjd-_Q" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJAu7GEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJA-7GEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJBO7GEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJBe7GEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJBu7GEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJB-7GEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Udvww-7GEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UdvwxO7GEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwxe7GEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwxu7GEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwx-7GEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UdvwyO7GEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QfRJCO7GEeK0p4PkXjd-_Q" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QfRJCe7GEeK0p4PkXjd-_Q" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QfRJCu7GEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QfRJC-7GEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QfRJDO7GEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJDe7GEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QfRJDu7GEeK0p4PkXjd-_Q" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QfRJD-7GEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QfRJEO7GEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QfRJEe7GEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJEu7GEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJAe7GEeK0p4PkXjd-_Q" x="60" y="366" width="241"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_QLWs4da8EeKPiuTfpuvqHA"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_XXUswNhbEeKgkM6XJF9t4A" type="PapyrusUMLClassDiagram" name="Property" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_bHaTMNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHaTMthbEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ0NhbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHgZ0dhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ0thbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHgZ09hbEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ1NhbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bHgZ1dhbEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ1thbEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_sdoisNhcEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_sdWO0NhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sdoisdhcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hUWEoNhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_hT9qINhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hUWEodhdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HlSkkO3qEeKwLp35IbAIig" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_HjktUO3qEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HlSkke3qEeKwLp35IbAIig"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ19hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ2NhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ2dhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ2thbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ29hbEeKgkM6XJF9t4A" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_9LXrUNhcEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_9LLeENhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9LXrUdhcEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ3NhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ3dhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ3thbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ39hbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ4NhbEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ4dhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ4thbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ49hbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ5NhbEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHaTMdhbEeKgkM6XJF9t4A" x="96" y="150" height="385"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bvJBkNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBkthbEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBk9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBlNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBldhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBlthbEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBl9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bvJBmNhbEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBmdhbEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBmthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBm9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBnNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBndhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBnthbEeKgkM6XJF9t4A" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_ZGIS4EczEeOEBJ2PxFQgyQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ZFFKAEczEeOEBJ2PxFQgyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZGIS4UczEeOEBJ2PxFQgyQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_oKCn4Ec8EeOEBJ2PxFQgyQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_oJwUAEc8EeOEBJ2PxFQgyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oKCn4Uc8EeOEBJ2PxFQgyQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBn9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBoNhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBodhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBothbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBo9hbEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBpNhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBpdhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBpthbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBp9hbEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBkdhbEeKgkM6XJF9t4A" x="378" y="426" width="205"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EoeLgNhcEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLgthcEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLg9hcEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLhNhcEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLhdhcEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLhthcEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLh9hcEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EoeLiNhcEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLidhcEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_oT_MwNhcEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_oTs44NhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oT_MwdhcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kq6-4NhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_kquxoNhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kq6-4dhdEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLithcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLi9hcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLjNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLjdhcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLjthcEeKgkM6XJF9t4A" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_YqkrENhgEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_VRDxkNhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YqkrEdhgEeKgkM6XJF9t4A" x="79" y="4"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLj9hcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLkNhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLkdhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLkthcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLk9hcEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLlNhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLldhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLlthcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLl9hcEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLgdhcEeKgkM6XJF9t4A" x="378" y="144"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_I4Ip4NhcEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip4thcEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip49hcEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip5NhcEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip5dhcEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip5thcEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip59hcEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I4Ip6NhcEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip6dhcEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_r6sYQNhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_r6aEYNhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_r6sYQdhdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_viIZANhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_vhv-gNhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_viIZAdhdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_i5_scNhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_i5nR8NhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_i5_scdhgEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mSjjsNhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_mR_jANhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mSjjsdhgEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pk2a4NhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_pkeAYNhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pk2a4dhgEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__M_A8NhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#__MsGANhgEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__M_A8dhgEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip6thcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip69hcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip7NhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip7dhcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip7thcEeKgkM6XJF9t4A" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_K3ckUNheEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_K3KQcNheEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_K3ckUdheEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip79hcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip8NhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip8dhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip8thcEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip89hcEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip9NhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip9dhcEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip9thcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip99hcEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_I3wPYNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip4dhcEeKgkM6XJF9t4A" x="924" y="144"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_RF_msNhdEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_msthdEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_ms9hdEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_mtNhdEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_mtdhdEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_mtthdEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_mt9hdEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RF_muNhdEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mudhdEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RF_muthdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mu9hdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mvNhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mvdhdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mvthdEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RF_mv9hdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mwNhdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mwdhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mwthdEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mw9hdEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RF_mxNhdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mxdhdEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mxthdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mx9hdEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_msdhdEeKgkM6XJF9t4A" x="96" y="12" width="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6SDikNhhEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDikthhEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDik9hhEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDilNhhEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDildhhEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDilthhEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDil9hhEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6SDimNhhEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6SDimdhhEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_HJqRsNhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_HJX90NhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HJqRsdhjEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6SDimthhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6SDim9hhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDinNhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDindhhEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6SDinthhEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6SDin9hhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6SDioNhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDiodhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDiothhEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6SDio9hhEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6SDipNhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6SDipdhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDipthhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDip9hhEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_6RrIENhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDikdhhEeKgkM6XJF9t4A" x="300" y="582"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-zGr4NhhEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr4thhEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr49hhEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr5NhhEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr5dhhEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr5thhEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr59hhEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-zGr6NhhEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr6dhhEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_lMxgANhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_lMfMINhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lMxgAdhjEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr6thhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr69hhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr7NhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr7dhhEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr7thhEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr79hhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr8NhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr8dhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr8thhEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr89hhEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr9NhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr9dhhEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr9thhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr99hhEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-yuRYNhhEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr4dhhEeKgkM6XJF9t4A" x="444" y="582"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CxJOwNhiEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOwthiEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOw9hiEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOxNhiEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOxdhiEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOxthiEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOx9hiEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CxPVYNhiEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVYdhiEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_oRl74NhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_oRNhYNhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oRl74dhjEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVYthiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVY9hiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVZNhiEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVZdhiEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVZthiEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVZ9hiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVaNhiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVadhiEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVathiEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVa9hiEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVbNhiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVbdhiEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVbthiEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVb9hiEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Cww0QNhiEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxJOwdhiEeKgkM6XJF9t4A" x="594" y="582"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6xipANhjEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipAthjEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipA9hjEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipBNhjEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipBdhjEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipBthjEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipB9hjEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6xipCNhjEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6xipCdhjEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6xipCthjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6xipC9hjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipDNhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipDdhjEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6xipDthjEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6xipD9hjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6xipENhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipEdhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipEthjEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6xipE9hjEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6xipFNhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6xipFdhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipFthjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipF9hjEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_6xEH4NhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipAdhjEeKgkM6XJF9t4A" x="300" y="318" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__i1NwNhjEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UYNhjEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UYdhjEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UYthjEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UY9hjEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UZNhjEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UZdhjEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__i7UZthjEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__i7UZ9hjEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__i7UaNhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__i7UadhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__i7UathjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7Ua9hjEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__i7UbNhjEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__i7UbdhjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__i7UbthjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__i7Ub9hjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7UcNhjEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__i7UcdhjEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__i7UcthjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__i7Uc9hjEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__i7UdNhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7UddhjEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#__iczQNhjEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i1NwdhjEeKgkM6XJF9t4A" x="420" y="318" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_E4NXANhkEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXAthkEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXA9hkEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXBNhkEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXBdhkEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXBthkEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXB9hkEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_E4NXCNhkEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXCdhkEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXCthkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXC9hkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXDNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXDdhkEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXDthkEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXD9hkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXENhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXEdhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXEthkEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXE9hkEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXFNhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXFdhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXFthkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXF9hkEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_E308gNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXAdhkEeKgkM6XJF9t4A" x="540" y="318" height="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_J6bTsNhkEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTsthkEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTs9hkEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTtNhkEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTtdhkEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTtthkEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTt9hkEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_J6bTuNhkEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTudhkEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_U0-VsNhkEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_U0l7MNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U0-VsdhkEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTuthkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTu9hkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTvNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTvdhkEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTvthkEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTv9hkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTwNhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTwdhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTwthkEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTw9hkEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTxNhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTxdhkEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTxthkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTx9hkEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_J6C5MNhkEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTsdhkEeKgkM6XJF9t4A" x="660" y="318" width="181" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_agYdYNxWEeKwptaAAanMDg" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekANxWEeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekAdxWEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekAtxWEeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekA9xWEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekBNxWEeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekBdxWEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_agekBtxWEeKwptaAAanMDg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_agekB9xWEeKwptaAAanMDg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_agekCNxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_agekCdxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_agekCtxWEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekC9xWEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_agekDNxWEeKwptaAAanMDg" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_OVcVENxXEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_OU7XsNxXEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OVcVEdxXEeKwptaAAanMDg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_agekDdxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_agekDtxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_agekD9xWEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekENxWEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_agekEdxWEeKwptaAAanMDg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_agekEtxWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_agekE9xWEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_agekFNxWEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekFdxWEeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_agAC4NxWEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agYdYdxWEeKwptaAAanMDg" x="174" y="582"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_XXUswdhbEeKgkM6XJF9t4A"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_L2wXINhcEeKgkM6XJF9t4A" type="4001" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXI9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXJNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXJdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXJthcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXJ9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXKNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXKdhcEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXKthcEeKgkM6XJF9t4A" x="-33" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXK9hcEeKgkM6XJF9t4A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXLNhcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L2wXLdhcEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXLthcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_L2wXIdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_L2X8oNhcEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_L2wXIthcEeKgkM6XJF9t4A" points="[4, 6, -164, 0]$[160, 5, -8, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L28kYNhcEeKgkM6XJF9t4A" id="(0.9682539682539683,0.16591928251121077)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L28kYdhcEeKgkM6XJF9t4A" id="(0.011764705882352941,0.3709677419354839)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_O7bCANhcEeKgkM6XJF9t4A" type="4001" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7bCA9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCBNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7bCBdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCBthcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7bCB9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCCNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7bCCdhcEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCCthcEeKgkM6XJF9t4A" x="-47" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7hIoNhcEeKgkM6XJF9t4A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7hIodhcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_O7hIothcEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_O7hIo9hcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_O7bCAdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_O7IuINhcEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7bCAthcEeKgkM6XJF9t4A" points="[7, 2, -165, 0]$[163, 5, -9, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7nPQNhcEeKgkM6XJF9t4A" id="(0.9764705882352941,0.8859934853420195)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7nPQdhcEeKgkM6XJF9t4A" id="(0.09,0.65)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_khaTANhcEeKgkM6XJF9t4A" type="4001" source="_J6bTsNhkEeKgkM6XJF9t4A" target="_I4Ip4NhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTA9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTBNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTBdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTBthcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTB9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTCNhcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTCdhcEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTCthcEeKgkM6XJF9t4A" x="-32" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTC9hcEeKgkM6XJF9t4A" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTDNhcEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_khaTDdhcEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTDthcEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_khaTAdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_khB4gNhcEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_khaTAthcEeKgkM6XJF9t4A" points="[7, -6, -114, 103]$[118, -107, -3, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_khmgQNhcEeKgkM6XJF9t4A" id="(0.96,0.28)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_khmgQdhcEeKgkM6XJF9t4A" id="(0.039525691699604744,0.8604651162790697)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YRoG8NhdEeKgkM6XJF9t4A" type="4002" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YRuNkNhdEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YRuNkdhdEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YRoG8dhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_YRb5sNhdEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YRoG8thdEeKgkM6XJF9t4A" points="[0, -4, 0, 48]$[-2, -42, -2, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YRuNkthdEeKgkM6XJF9t4A" id="(0.47368421052631576,0.017937219730941704)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YRuNk9hdEeKgkM6XJF9t4A" id="(0.45323741007194246,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5UPMQNhdEeKgkM6XJF9t4A" type="4002" source="_EoeLgNhcEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5UPMQ9hdEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5UPMRNhdEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5UPMQdhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_5T84YNhdEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5UPMQthdEeKgkM6XJF9t4A" points="[-13, -4, 179, 58]$[-177, -57, 15, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UV58NhdEeKgkM6XJF9t4A" id="(0.3764705882352941,0.03225806451612903)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UV58dhdEeKgkM6XJF9t4A" id="(0.9112426035502958,0.74)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7u0_YNhdEeKgkM6XJF9t4A" type="4002" source="_I4Ip4NhcEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7u0_Y9hdEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7u0_ZNhdEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_7u0_YdhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_7uWeQNhdEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7u0_YthdEeKgkM6XJF9t4A" points="[-24, -5, 419, 89]$[-432, -96, 11, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7u0_ZdhdEeKgkM6XJF9t4A" id="(0.2529411764705882,0.04032258064516129)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7u7GANhdEeKgkM6XJF9t4A" id="(0.9349112426035503,0.43)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_g5zEYNhiEeKgkM6XJF9t4A" type="4002" source="_6SDikNhhEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_g5zEY9hiEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g5zEZNhiEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_g5zEYdhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_g5ap4NhiEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g5zEYthiEeKgkM6XJF9t4A" points="[3, -3, -68, 60]$[70, -59, -1, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g55LANhiEeKgkM6XJF9t4A" id="(0.51,0.03)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g55LAdhiEeKgkM6XJF9t4A" id="(0.44,0.96)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_klsuYNhiEeKgkM6XJF9t4A" type="4002" source="_-zGr4NhhEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_klsuY9hiEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_klsuZNhiEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_klsuYdhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_klghINhiEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_klsuYthiEeKgkM6XJF9t4A" points="[-3, -3, 52, 61]$[-55, -59, 0, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kly1ANhiEeKgkM6XJF9t4A" id="(0.44,0.03)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kly1AdhiEeKgkM6XJF9t4A" id="(0.55,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_mlyW0NhiEeKgkM6XJF9t4A" type="4002" source="_CxJOwNhiEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_mlyW09hiEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mlyW1NhiEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_mlyW0dhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_mlgC8NhiEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mlyW0thiEeKgkM6XJF9t4A" points="[-23, -12, 136, 67]$[-150, -67, 9, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ml4dcNhiEeKgkM6XJF9t4A" id="(0.23,0.11)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ml4dcdhiEeKgkM6XJF9t4A" id="(0.8,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_n32JsNhkEeKgkM6XJF9t4A" type="4002" source="_6xipANhjEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_n38QUNhkEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_n38QUdhkEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_n32JsdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_n3p8cNhkEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_n32JsthkEeKgkM6XJF9t4A" points="[7, -5, -63, 44]$[66, -44, -4, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n38QUthkEeKgkM6XJF9t4A" id="(0.52,0.09090909090909091)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n38QU9hkEeKgkM6XJF9t4A" id="(0.25882352941176473,0.9629629629629629)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rg2QsNhkEeKgkM6XJF9t4A" type="4002" source="__i1NwNhjEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rg23wNhkEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rg23wdhkEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rg2QsdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_rgmZENhkEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rg2QsthkEeKgkM6XJF9t4A" points="[0, -7, 0, 48]$[0, -46, 0, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rg7JMNhkEeKgkM6XJF9t4A" id="(0.43,0.12727272727272726)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rg7JMdhkEeKgkM6XJF9t4A" id="(0.5,0.9333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_tdN2wNhkEeKgkM6XJF9t4A" type="4002" source="_E4NXANhkEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tdN2w9hkEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tdN2xNhkEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tdN2wdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_tdBpgNhkEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tdN2wthkEeKgkM6XJF9t4A" points="[-10, -11, 39, 45]$[-45, -50, 4, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdT9YNhkEeKgkM6XJF9t4A" id="(0.23,0.22916666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdT9YdhkEeKgkM6XJF9t4A" id="(0.8,0.9555555555555556)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_wLqaANhkEeKgkM6XJF9t4A" type="4002" source="_J6bTsNhkEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wLqaA9hkEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wLqaBNhkEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_wLqaAdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_wLYGINhkEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wLqaAthkEeKgkM6XJF9t4A" points="[-19, -7, 128, 48]$[-142, -52, 5, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wLqaBdhkEeKgkM6XJF9t4A" id="(0.19607843137254902,0.12727272727272726)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wLqaBthkEeKgkM6XJF9t4A" id="(0.9705882352941176,0.9333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_drg8oNxWEeKwptaAAanMDg" type="4002" source="_agYdYNxWEeKwptaAAanMDg" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_drg8o9xWEeKwptaAAanMDg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_drg8pNxWEeKwptaAAanMDg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_drg8odxWEeKwptaAAanMDg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_drCbgNxWEeKwptaAAanMDg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_drg8otxWEeKwptaAAanMDg" points="[9, -4, -135, 59]$[141, -60, -3, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_drnqUNxWEeKwptaAAanMDg" id="(0.7,0.04)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_drnqUdxWEeKwptaAAanMDg" id="(0.1,0.97)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_ePKuUNhbEeKgkM6XJF9t4A" type="PapyrusUMLClassDiagram" name="packages" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_fBRgsNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgsthbEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgs9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgtNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgtdhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgtthbEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgt9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fBRguNhbEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fBRgudhbEeKgkM6XJF9t4A" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_pSg0ENhoEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_pSIZkNhoEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pSg0EdhoEeKgkM6XJF9t4A"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fBRguthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fBRgu9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fBRgvNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBRgvdhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fBXnUNhbEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fBXnUdhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fBXnUthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fBXnU9hbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBXnVNhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fBXnVdhbEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fBXnVthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fBXnV9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fBXnWNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBXnWdhbEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_fAmyUNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBRgsdhbEeKgkM6XJF9t4A" x="212" y="111"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gglXUNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXUthbEeKgkM6XJF9t4A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXU9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXVNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXVdhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXVthbEeKgkM6XJF9t4A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXV9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gglXWNhbEeKgkM6XJF9t4A" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gglXWdhbEeKgkM6XJF9t4A" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gglXWthbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gglXW9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXXNhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXXdhbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gglXXthbEeKgkM6XJF9t4A" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gglXX9hbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gglXYNhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXYdhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXYthbEeKgkM6XJF9t4A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gglXY9hbEeKgkM6XJF9t4A" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gglXZNhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gglXZdhbEeKgkM6XJF9t4A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXZthbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXZ9hbEeKgkM6XJF9t4A"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXUdhbEeKgkM6XJF9t4A" x="510" y="108" width="145" height="103"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_ePKuUdhbEeKgkM6XJF9t4A"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_jtwd8NhbEeKgkM6XJF9t4A" type="4001" source="_fBRgsNhbEeKgkM6XJF9t4A" target="_gglXUNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd89hbEeKgkM6XJF9t4A" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd9NhbEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd9dhbEeKgkM6XJF9t4A" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd9thbEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd99hbEeKgkM6XJF9t4A" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd-NhbEeKgkM6XJF9t4A" x="13" y="-19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd-dhbEeKgkM6XJF9t4A" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd-thbEeKgkM6XJF9t4A" x="-21" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd-9hbEeKgkM6XJF9t4A" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd_NhbEeKgkM6XJF9t4A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jtwd_dhbEeKgkM6XJF9t4A" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd_thbEeKgkM6XJF9t4A" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_jtwd8dhbEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_jtR80NhbEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jtwd8thbEeKgkM6XJF9t4A" points="[10, -7, -200, 0]$[208, -8, -2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_juCx0NhbEeKgkM6XJF9t4A" id="(0.9,0.45)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_juCx0dhbEeKgkM6XJF9t4A" id="(0.013793103448275862,0.41)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_6nHbUNhbEeKgkM6XJF9t4A" type="4002" source="_fBRgsNhbEeKgkM6XJF9t4A" target="_gglXUNhbEeKgkM6XJF9t4A" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6nNh8NhbEeKgkM6XJF9t4A" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6nNh8dhbEeKgkM6XJF9t4A" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_6nHbUdhbEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_6l23ENhbEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6nHbUthbEeKgkM6XJF9t4A" points="[9, 2, -202, 0]$[207, 3, -4, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6nTokNhbEeKgkM6XJF9t4A" id="(0.91,0.79)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6nTokdhbEeKgkM6XJF9t4A" id="(0.027586206896551724,0.8155339805825242)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Dtu4wNjkEeKQqZMBCFd2Uw" type="PapyrusUMLClassDiagram" name="Layer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Uvsk8NjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk8tjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk89jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk9NjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk9djkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk9tjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk99jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uvsk-NjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uvsk-djkEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uvsk-tjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uvsk-9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uvsk_NjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uvsk_djkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uvsk_tjkEeKQqZMBCFd2Uw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_gjkCIOKIEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_gfah8OKIEeKOWoLMe41Aew"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gjkCIeKIEeKOWoLMe41Aew"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vMCucOKIEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_sJkb8OKIEeKOWoLMe41Aew"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vMCuceKIEeKOWoLMe41Aew" x="61" y="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wyp-kOKWEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ldtfkOKWEeKOWoLMe41Aew"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wyp-keKWEeKOWoLMe41Aew" x="70" y="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NC0BgOKXEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_IR-vwOKXEeKOWoLMe41Aew"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NC0BgeKXEeKOWoLMe41Aew" x="68" y="90"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uvsk_9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UvslANjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UvslAdjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvslAtjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UvslA9jkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UvslBNjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UvslBdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UvslBtjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvslB9jkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uvsk8djkEeKQqZMBCFd2Uw" x="126" y="114" width="295" height="511"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UvyrkNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yMNjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yMdjkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yMtjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yM9jkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yNNjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yNdjkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv4yNtjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yN9jkEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yONjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yOdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yOtjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yO9jkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yPNjkEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yPdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yPtjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yP9jkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yQNjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yQdjkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yQtjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yQ9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yRNjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yRdjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvyrkdjkEeKQqZMBCFd2Uw" x="606" y="246" height="145"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_blTK0NjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK0tjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK09jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK1NjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK1djkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK1tjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK19jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_blTK2NjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_blTK2djkEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_uF4KENjkEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_1B8jINjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uF4KEdjkEeKQqZMBCFd2Uw" x="58" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uF-QsNjkEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_4f0_QNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uF-QsdjkEeKQqZMBCFd2Uw" x="58" y="4"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_blTK2tjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_blTK29jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK3NjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK3djkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_blTK3tjkEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_blTK39jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_blTK4NjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK4djkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK4tjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_blTK49jkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_blTK5NjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_blTK5djkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK5tjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK59jkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_vMMQsNjKEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK0djkEeKQqZMBCFd2Uw" x="600" y="414"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cs2BsNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BstjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2Bs9jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BtNjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2BtdjkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BttjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2Bt9jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cs2BuNjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IUNjkEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IUdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IUtjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IU9jkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IVNjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IVdjkEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IVtjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IV9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IWNjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IWdjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IWtjkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IW9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IXNjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IXdjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IXtjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs2BsdjkEeKQqZMBCFd2Uw" x="600" y="114"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1pN_sNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_stjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_s9jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_tNjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_tdjkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_ttjkEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_t9jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1pN_uNjkEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_udjkEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_utjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_u9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_vNjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_vdjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_vtjkEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_v9jkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_wNjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_wdjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_wtjkEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_w9jkEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_xNjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_xdjkEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_xtjkEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_x9jkEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_sdjkEeKQqZMBCFd2Uw" x="600" y="576"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_o64RUO-MEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fcO-MEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o65fce-MEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fcu-MEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o65fc--MEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fdO-MEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o66GgO-MEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o66Gge-MEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_o66Ggu-MEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_o66Gg--MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_o66GhO-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Ghe-MEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66Ghu-MEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_o66Gh--MEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_o66GiO-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_o66Gie-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Giu-MEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66Gi--MEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_o66GjO-MEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_o66Gje-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_o66Gju-MEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Gj--MEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66GkO-MEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o64RUe-MEeK0p4PkXjd-_Q" x="600" y="696"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Dtu4wdjkEeKQqZMBCFd2Uw"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Uv-40NjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_UvyrkNjkEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-409jkEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-41NjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-41djkEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-41tjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-419jkEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-42NjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-42djkEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-42tjkEeKQqZMBCFd2Uw" x="-41" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-429jkEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-43NjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uv-43djkEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-43tjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Uv-40djkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_5YuNINa8EeKPiuTfpuvqHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Uv-40tjkEeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YMwhsNjkEeKQqZMBCFd2Uw" id="(0.9469026548672567,0.3131115459882583)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hiwAsNjkEeKQqZMBCFd2Uw" id="(0.06,0.16)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_blfYENjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_blTK0NjkEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bllesNjkEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bllesdjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bllestjkEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_blles9jkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_blletNjkEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_blletdjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bllettjkEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bllet9jkEeKQqZMBCFd2Uw" x="-36" y="26"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_blleuNjkEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_blleudjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_blleutjkEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_blleu9jkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_blfYEdjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_A1nlgNjLEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_blfYEtjkEeKQqZMBCFd2Uw" points="[-113, -124, 126, 137]$[-239, -261, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f6SOENjkEeKQqZMBCFd2Uw" id="(0.9601769911504425,0.6986301369863014)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uuS08NjkEeKQqZMBCFd2Uw" id="(0.0,0.41935483870967744)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ctIVkNjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_cs2BsNjkEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVk9jkEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVlNjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVldjkEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVltjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVl9jkEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVmNjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVmdjkEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVmtjkEeKQqZMBCFd2Uw" x="-47" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVm9jkEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVnNjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ctIVndjkEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVntjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ctIVkdjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_LBIf0NjiEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ctIVktjkEeKQqZMBCFd2Uw" points="[-113, -124, 126, 137]$[-239, -261, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ewVjcNjkEeKQqZMBCFd2Uw" id="(0.9513274336283186,0.09784735812133072)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3rXdoNjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_1pN_sNjkEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkQNjkEeKQqZMBCFd2Uw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkQdjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkQtjkEeKQqZMBCFd2Uw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkQ9jkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkRNjkEeKQqZMBCFd2Uw" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkRdjkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkRtjkEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkR9jkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkSNjkEeKQqZMBCFd2Uw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkSdjkEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3rdkStjkEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkS9jkEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3rXdodjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_3q_DINjkEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3rXdotjkEeKQqZMBCFd2Uw" points="[6, 2, -253, 0]$[254, 0, -5, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rjq4NjkEeKQqZMBCFd2Uw" id="(0.9734513274336283,0.974559686888454)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rjq4djkEeKQqZMBCFd2Uw" id="(0.05,0.38)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rE_YcO-MEeK0p4PkXjd-_Q" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_o64RUO-MEeK0p4PkXjd-_Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rE__gO-MEeK0p4PkXjd-_Q" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rE__ge-MEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFAmkO-MEeK0p4PkXjd-_Q" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmke-MEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFAmku-MEeK0p4PkXjd-_Q" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmk--MEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFAmlO-MEeK0p4PkXjd-_Q" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmle-MEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFAmlu-MEeK0p4PkXjd-_Q" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAml--MEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rFBNoO-MEeK0p4PkXjd-_Q" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rFBNoe-MEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rE_Yce-MEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_rEb-0O-MEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rE_Ycu-MEeK0p4PkXjd-_Q" points="[0, 4, -308, -115]$[0, 127, -308, 8]$[301, 127, -7, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rFKXkO-MEeK0p4PkXjd-_Q" id="(0.7654867256637168,0.9921722113502935)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rFK-oO-MEeK0p4PkXjd-_Q" id="(0.07,0.44)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_-aAtoNjpEeKQqZMBCFd2Uw" type="PapyrusUMLClassDiagram" name="Registries" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Atmg4NjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg4tjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg49jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg5NjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg5djqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg5tjqEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg59jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Atmg6NjqEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg6djqEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_RruhsA2qEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_idRzUA2qEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idRzUQ2qEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYA2qEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EAttribute"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYQ2qEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYg2qEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYw2qEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="layers.uml#_RrX8YA2qEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RruhsQ2qEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg6tjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg69jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg7NjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg7djqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg7tjqEeKQqZMBCFd2Uw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_1YYywNkCEeKQqZMBCFd2Uw" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_1X6RoNkCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1YYywdkCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lJ0JoOT7EeKSDdPH_NXL-g" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_dcjjAOT7EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lJ0JoeT7EeKSDdPH_NXL-g" x="53" y="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KmAZMA3LEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_Klpz4A3LEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KmAZMQ3LEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg79jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg8NjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg8djqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg8tjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg89jqEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg9NjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg9djqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg9tjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg99jqEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_8OefoNjoEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg4djqEeKQqZMBCFd2Uw" y="96" width="179" height="277"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ERoBQNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBQtjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBQ9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBRNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBRdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBRtjqEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBR9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ERoBSNjqEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBSdjqEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_G8FcYNjqEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_sdWO0NhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_G8FcYdjqEeKQqZMBCFd2Uw" x="36" y="12"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_G8LjANjqEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_hT9qINhdEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_G8LjAdjqEeKQqZMBCFd2Uw" x="36" y="12"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBStjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBS9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBTNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBTdjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBTtjqEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBT9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBUNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBUdjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBUtjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBU9jqEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBVNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBVdjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBVtjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBV9jqEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBQdjqEeKQqZMBCFd2Uw" x="678" y="96"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ItfvoNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvotjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Itfvo9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvpNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ItfvpdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvptjqEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Itfvp9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ItfvqNjqEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ItfvqdjqEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_j-VYsNjsEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_j-DE0NjsEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_j-VYsdjsEeKQqZMBCFd2Uw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ItfvqtjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Itfvq9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvrNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvrdjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ItfvrtjqEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Itfvr9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ItfvsNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvsdjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvstjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Itfvs9jqEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ItfvtNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ItfvtdjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvttjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Itfvt9jqEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ItBOgNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvodjqEeKQqZMBCFd2Uw" x="504" y="96" width="115" height="115"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hhHaQNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaQtjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaQ9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaRNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaRdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaRtjqEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaR9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XtJ68NjsEeKQqZMBCFd2Uw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ68djsEeKQqZMBCFd2Uw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ68tjsEeKQqZMBCFd2Uw" key="StereotypeList" value="Ecore::EClass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ689jsEeKQqZMBCFd2Uw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ69NjsEeKQqZMBCFd2Uw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ69djsEeKQqZMBCFd2Uw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hhHaSNjqEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaSdjqEeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_fQvoMNjsEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_fQXNsNjsEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fQvoMdjsEeKQqZMBCFd2Uw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaStjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaS9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaTNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaTdjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaTtjqEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaT9jqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaUNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaUdjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaUtjqEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaU9jqEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaVNjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaVdjqEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaVtjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaV9jqEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_hgu_wNjqEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaQdjqEeKQqZMBCFd2Uw" x="294" y="96" width="139" height="115"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HTfqQNj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqQtj_EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqQ9j_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqRNj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqRdj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqRtj_EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqR9j_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTfqSNj_EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTfqSdj_EeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTfqStj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTfqS9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTfqTNj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqTdj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTfqTtj_EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTfqT9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTfqUNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTfqUdj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqUtj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTlw4Nj_EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTlw4dj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTlw4tj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTlw49j_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTlw5Nj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_tLip8Nj-EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqQdj_EeKQqZMBCFd2Uw" x="312" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HTlw5dj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTlw59j_EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3gNj_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTr3gdj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3gtj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTr3g9j_EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3hNj_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTr3hdj_EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3htj_EeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3h9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3iNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3idj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3itj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3i9j_EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3jNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3jdj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3jtj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3j9j_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3kNj_EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3kdj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3ktj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3k9j_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3lNj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTlw5tj_EeKQqZMBCFd2Uw" x="768" y="329"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_P5J4gNj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4gtj_EeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4g9j_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4hNj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4hdj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4htj_EeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4h9j_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gxnDYNj_EeKQqZMBCFd2Uw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDYdj_EeKQqZMBCFd2Uw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDYtj_EeKQqZMBCFd2Uw" key="StereotypeList" value="Ecore::EClass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDY9j_EeKQqZMBCFd2Uw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDZNj_EeKQqZMBCFd2Uw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnqcNj_EeKQqZMBCFd2Uw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P5J4iNj_EeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4idj_EeKQqZMBCFd2Uw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_kayJgNj_EeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_kaf1oNj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kayJgdj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4itj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4i9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4jNj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4jdj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4jtj_EeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4j9j_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4kNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4kdj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4ktj_EeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4k9j_EeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4lNj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4ldj_EeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4ltj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4l9j_EeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_P4xeANj_EeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4gdj_EeKQqZMBCFd2Uw" x="528" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_M3hWsNkDEeKQqZMBCFd2Uw" type="2012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWstkDEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWs9kDEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWtNkDEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWtdkDEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWttkDEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWt9kDEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_M3hWuNkDEeKQqZMBCFd2Uw" type="5038"/>
+ <element xmi:type="uml:Comment" href="layers.uml#_M28u8NkDEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M3hWsdkDEeKQqZMBCFd2Uw" x="246" y="180"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a8TPANqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8TPAtqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8TPA9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8ZVoNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8ZVodqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8ZVotqCEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8ZVo9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8ZVpNqCEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVpdqCEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVptqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVp9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVqNqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVqdqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVqtqCEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVq9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVrNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVrdqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVrtqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVr9qCEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVsNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVsdqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVstqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVs9qCEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_zYGE8NqBEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8TPAdqCEeKQqZMBCFd2Uw" x="24" y="540"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a8fcQNqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcQtqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcQ9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcRNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcRdqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcRtqCEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcR9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8fcSNqCEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcSdqCEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcStqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcS9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcTNqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcTdqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcTtqCEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcT9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcUNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcUdqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcUtqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcU9qCEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcVNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcVdqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcVtqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcV9qCEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcQdqCEeKQqZMBCFd2Uw" x="384" y="540" width="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xiCs0NqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs0tqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs09qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs1NqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs1dqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs1tqCEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs19qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xiCs2NqCEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs2dqCEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs2tqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs29qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs3NqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs3dqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs3tqCEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs39qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs4NqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs4dqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs4tqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs49qCEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs5NqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs5dqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs5tqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs59qCEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_xhwY8NqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs0dqCEeKQqZMBCFd2Uw" x="258" y="681" width="179"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_z5FcsNqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FcstqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5Fcs9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FctNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5FctdqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FcttqCEeKQqZMBCFd2Uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5Fct9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z5FcuNqCEeKQqZMBCFd2Uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z5FcudqCEeKQqZMBCFd2Uw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z5FcutqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z5Fcu9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcvNqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcvdqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z5FcvtqCEeKQqZMBCFd2Uw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z5Fcv9qCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z5FcwNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcwdqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcwtqCEeKQqZMBCFd2Uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_z5Fcw9qCEeKQqZMBCFd2Uw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_z5FcxNqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_z5FcxdqCEeKQqZMBCFd2Uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcxtqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5Fcx9qCEeKQqZMBCFd2Uw"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_z4m7kNqCEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcsdqCEeKQqZMBCFd2Uw" x="552" y="684" width="170"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_-aAtodjpEeKQqZMBCFd2Uw"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_NV6sQNjqEeKQqZMBCFd2Uw" type="4001" source="_Atmg4NjqEeKQqZMBCFd2Uw" target="_ERoBQNjqEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sQ9jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sRNjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sRdjqEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sRtjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sR9jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sSNjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sSdjqEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sStjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sS9jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sTNjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NV6sTdjqEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sTtjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NV6sQdjqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_NVcLINjqEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NV6sQtjqEeKQqZMBCFd2Uw" points="[5, 6, -474, 49]$[486, 6, 7, 49]$[486, -38, 7, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NWAy4NjqEeKQqZMBCFd2Uw" id="(0.984,0.6498194945848376)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NWAy4djqEeKQqZMBCFd2Uw" id="(0.38235294117647056,0.9596774193548387)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZdgJINjqEeKQqZMBCFd2Uw" type="4001" source="_ItfvoNjqEeKQqZMBCFd2Uw" target="_ERoBQNjqEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJI9jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJJNjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJJdjqEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJJtjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJJ9jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJKNjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJKdjqEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJKtjqEeKQqZMBCFd2Uw" x="-31" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJK9jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJLNjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJLdjqEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJLtjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZdgJIdjqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_ZdBoANjqEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZdgJItjqEeKQqZMBCFd2Uw" points="[6, 8, -83, 0]$[83, 8, -6, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZdmPwNjqEeKQqZMBCFd2Uw" id="(0.991304347826087,0.6347826086956522)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZdmPwdjqEeKQqZMBCFd2Uw" id="(0.03529411764705882,0.5483870967741935)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_m0GW0NjqEeKQqZMBCFd2Uw" type="4001" source="_hhHaQNjqEeKQqZMBCFd2Uw" target="_ItfvoNjqEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW09jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW1NjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW1djqEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW1tjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW19jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW2NjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW2djqEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW2tjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW29jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW3NjqEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_m0GW3djqEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW3tjqEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_m0GW0djqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_mzt8UNjqEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m0GW0tjqEeKQqZMBCFd2Uw" points="[10, 0, -74, 0]$[78, -1, -6, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m0MdcNjqEeKQqZMBCFd2Uw" id="(0.9856115107913669,0.4596774193548387)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m0MdcdjqEeKQqZMBCFd2Uw" id="(0.05217391304347826,0.4881889763779528)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_HTx-INj_EeKQqZMBCFd2Uw" type="4001" source="_HTfqQNj_EeKQqZMBCFd2Uw" target="_P5J4gNj_EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-I9j_EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-JNj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Jdj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Jtj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-J9j_EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-KNj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Kdj_EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Ktj_EeKQqZMBCFd2Uw" x="-26" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-K9j_EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-LNj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Ldj_EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Ltj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_HTx-Idj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_2bADINj-EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HTx-Itj_EeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TJzJ4Nj_EeKQqZMBCFd2Uw" id="(0.025423728813559324,0.4596774193548387)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JiaY4Nj_EeKQqZMBCFd2Uw" type="4001" source="_Atmg4NjqEeKQqZMBCFd2Uw" target="_HTfqQNj_EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JiaY49j_EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfgNj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfgdj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfgtj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfg9j_EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfhNj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfhdj_EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfhtj_EeKQqZMBCFd2Uw" x="-26" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfh9j_EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfiNj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jigfidj_EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfitj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JiaY4dj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_Jh73wNj_EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JiaY4tj_EeKQqZMBCFd2Uw" points="[6, 1, -141, -26]$[139, 21, -8, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JimmINj_EeKQqZMBCFd2Uw" id="(0.952,0.8916967509025271)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JimmIdj_EeKQqZMBCFd2Uw" id="(0.08,0.22)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_U1kIINj_EeKQqZMBCFd2Uw" type="4001" source="_P5J4gNj_EeKQqZMBCFd2Uw" target="_HTlw5dj_EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1kvMNj_EeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1kvMdj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWQNj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWQdj_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWQtj_EeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWQ9j_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWRNj_EeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWRdj_EeKQqZMBCFd2Uw" x="-19" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWRtj_EeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWR9j_EeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U1lWSNj_EeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWSdj_EeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_U1kIIdj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_U1FnANj_EeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_U1kIItj_EeKQqZMBCFd2Uw" points="[6, -1, -127, 19]$[122, -25, -11, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U1srANj_EeKQqZMBCFd2Uw" id="(0.9491525423728814,0.42)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U1srAdj_EeKQqZMBCFd2Uw" id="(0.06,0.48)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_o2GW4NkCEeKQqZMBCFd2Uw" type="4001" source="_ERoBQNjqEeKQqZMBCFd2Uw" target="_HTlw5dj_EeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2GW49kCEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW5NkCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2GW5dkCEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW5tkCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2GW59kCEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW6NkCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2MdgNkCEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2MdgdkCEeKQqZMBCFd2Uw" x="-3" y="45"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2MdgtkCEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2Mdg9kCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o2MdhNkCEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_o2MdhdkCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_o2GW4dkCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_L2X8oNhcEeKgkM6XJF9t4A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_o2GW4tkCEeKQqZMBCFd2Uw" points="[15, 62, -40, -159]$[42, 171, -13, -50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p5Y_4NkCEeKQqZMBCFd2Uw" id="(0.8176470588235294,0.9354838709677419)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_a8li4NqCEeKQqZMBCFd2Uw" type="4001" source="_a8TPANqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li49qCEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li5NqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li5dqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li5tqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li59qCEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li6NqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li6dqCEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li6tqCEeKQqZMBCFd2Uw" x="-45" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li69qCEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li7NqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a8li7dqCEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li7tqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_a8li4dqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_Tz2loNqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a8li4tqCEeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ii_TkNqCEeKQqZMBCFd2Uw" type="4001" source="_a8fcQNqCEeKQqZMBCFd2Uw" target="_Atmg4NjqEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaMNqCEeKQqZMBCFd2Uw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaMdqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaMtqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaM9qCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaNNqCEeKQqZMBCFd2Uw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaNdqCEeKQqZMBCFd2Uw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaNtqCEeKQqZMBCFd2Uw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaN9qCEeKQqZMBCFd2Uw" x="54" y="94"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaONqCEeKQqZMBCFd2Uw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaOdqCEeKQqZMBCFd2Uw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ijFaOtqCEeKQqZMBCFd2Uw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaO9qCEeKQqZMBCFd2Uw" x="48" y="-35"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ii_TkdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_iim5ENqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ii_TktqCEeKQqZMBCFd2Uw" points="[0, -12, 340, 174]$[0, -96, 340, 90]$[-334, -96, 6, 90]$[-334, -179, 6, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ijLg0NqCEeKQqZMBCFd2Uw" id="(0.38095238095238093,0.12)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ijLg0dqCEeKQqZMBCFd2Uw" id="(0.4692737430167598,0.9747292418772563)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3e3QkNqCEeKQqZMBCFd2Uw" type="4002" source="_xiCs0NqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3e3Qk9qCEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3e3QlNqCEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3e3QkdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_3ee2ENqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3e3QktqCEeKQqZMBCFd2Uw" points="[10, -8, -68, 52]$[69, -49, -9, 11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3e3QldqCEeKQqZMBCFd2Uw" id="(0.6089385474860335,0.08)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3e3QltqCEeKQqZMBCFd2Uw" id="(0.3370165745856354,0.89)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5SH98NqCEeKQqZMBCFd2Uw" type="4002" source="_z5FcsNqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5SH989qCEeKQqZMBCFd2Uw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5SH99NqCEeKQqZMBCFd2Uw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5SH98dqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_5RvjcNqCEeKQqZMBCFd2Uw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5SH98tqCEeKQqZMBCFd2Uw" points="[-14, -7, 97, 52]$[-108, -51, 3, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5SOEkNqCEeKQqZMBCFd2Uw" id="(0.3,0.07)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5SOEkdqCEeKQqZMBCFd2Uw" id="(0.5966850828729282,0.92)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_gSkRsNxGEeKwptaAAanMDg" type="PapyrusUMLClassDiagram" name="exceptions" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_iYyXUNxGEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYy-YNxGEeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYy-YdxGEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYzlcNxGEeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYzlcdxGEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYzlctxGEeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYzlc9xGEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qcdS09xGEeKwptaAAanMDg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1NxGEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1dxGEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1txGEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS19xGEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS2NxGEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iYzldNxGEeKwptaAAanMDg" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iY0MgNxGEeKwptaAAanMDg" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iY0MgdxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iY0MgtxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iY0Mg9xGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iY0MhNxGEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iY0MhdxGEeKwptaAAanMDg" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iY0MhtxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iY0Mh9xGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iY0MiNxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iY0MidxGEeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_iYKFMNxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iYyXUdxGEeKwptaAAanMDg" x="263" y="39" width="140"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_k-76MNxGEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76MtxGEeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76M9xGEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76NNxGEeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76NdxGEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76NtxGEeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76N9xGEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4SAtY9xGEeKwptaAAanMDg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZNxGEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZdxGEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZtxGEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZ9xGEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtaNxGEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_k-76ONxGEeKwptaAAanMDg" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_k-76OdxGEeKwptaAAanMDg" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k-76OtxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k-76O9xGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k-76PNxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76PdxGEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_k-76PtxGEeKwptaAAanMDg" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k-76P9xGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k-76QNxGEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k-76QdxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76QtxGEeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_k-dZENxGEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76MdxGEeKwptaAAanMDg" x="444" y="186" width="141"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KHZoUNxMEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoUtxMEeKwptaAAanMDg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoU9xMEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoVNxMEeKwptaAAanMDg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoVdxMEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoVtxMEeKwptaAAanMDg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoV9xMEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PWnfMNxMEeKwptaAAanMDg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfMdxMEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfMtxMEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfM9xMEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfNNxMEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfNdxMEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KHZoWNxMEeKwptaAAanMDg" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KHZoWdxMEeKwptaAAanMDg" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_KHZoWtxMEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_KHZoW9xMEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_KHZoXNxMEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoXdxMEeKwptaAAanMDg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KHZoXtxMEeKwptaAAanMDg" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_KHZoX9xMEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_KHZoYNxMEeKwptaAAanMDg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_KHZoYdxMEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoYtxMEeKwptaAAanMDg"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#_KG7HMNxMEeKwptaAAanMDg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoUdxMEeKwptaAAanMDg" x="72" y="192" width="145"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_gSkRsdxGEeKwptaAAanMDg"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ox-G8NxGEeKwptaAAanMDg" type="4002" source="_k-76MNxGEeKwptaAAanMDg" target="_iYyXUNxGEeKwptaAAanMDg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ox_VENxGEeKwptaAAanMDg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ox_VEdxGEeKwptaAAanMDg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ox-G8dxGEeKwptaAAanMDg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_oxlscNxGEeKwptaAAanMDg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ox-G8txGEeKwptaAAanMDg" points="[-10, -5, 124, 68]$[-128, -61, 6, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oyDmgNxGEeKwptaAAanMDg" id="(0.2978723404255319,0.054945054945054944)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oyDmgdxGEeKwptaAAanMDg" id="(0.6357142857142857,0.8681318681318682)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ShmNcNxMEeKwptaAAanMDg" type="4002" source="_KHZoUNxMEeKwptaAAanMDg" target="_iYyXUNxGEeKwptaAAanMDg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ShmNc9xMEeKwptaAAanMDg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ShmNdNxMEeKwptaAAanMDg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ShmNcdxMEeKwptaAAanMDg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ShHsUNxMEeKwptaAAanMDg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ShmNctxMEeKwptaAAanMDg" points="[12, -8, -83, 52]$[82, -50, -13, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ShsUENxMEeKwptaAAanMDg" id="(0.7517241379310344,0.07207207207207207)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ShsUEdxMEeKwptaAAanMDg" id="(0.09285714285714286,0.9099099099099099)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_j4XzEOT_EeKSDdPH_NXL-g" type="PapyrusUMLClassDiagram" name="Appearance Properties" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_ruaiQOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo4eT_EeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo4uT_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo4-T_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo5OT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo5eT_EeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo5uT_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rugo5-T_EeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rugo6OT_EeKSDdPH_NXL-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rugo6eT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rugo6uT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo6-T_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo7OT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rugo7eT_EeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rugo7uT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rugo7-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo8OT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo8eT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rugo8uT_EeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rugo8-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rugo9OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo9eT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo9uT_EeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo4OT_EeKSDdPH_NXL-g" x="294" y="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tBcQYOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQYuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQY-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQZOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQZeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQZuT_EeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQZ-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tBcQaOT_EeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQaeT_EeKSDdPH_NXL-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQauT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQa-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQbOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQbeT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQbuT_EeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQb-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQcOT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQceT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQcuT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQc-T_EeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQdOT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQdeT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQduT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQd-T_EeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQYeT_EeKSDdPH_NXL-g" x="696" y="65"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tjX4wOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" fillColor="15053796" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4wuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4w-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4xOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4xeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4xuT_EeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4x-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tjX4yOT_EeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tjX4yeT_EeKSDdPH_NXL-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tjX4yuT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tjX4y-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX4zOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX4zeT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tjX4zuT_EeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tjX4z-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tjX40OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX40eT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX40uT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tjX40-T_EeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tjX41OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tjX41eT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX41uT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX41-T_EeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ti_eQOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX4weT_EeKSDdPH_NXL-g" x="726" y="215"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vkxIwOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIwuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIw-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIxOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIxeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIxuT_EeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIx-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vkxIyOT_EeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vkxIyeT_EeKSDdPH_NXL-g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_VwHpgOUAEeKSDdPH_NXL-g" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_Q8HvAOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VwHpgeUAEeKSDdPH_NXL-g" x="15"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vkxIyuT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vkxIy-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxIzOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxIzeT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vkxIzuT_EeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vkxIz-T_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vkxI0OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxI0eT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxI0uT_EeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vkxI0-T_EeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vkxI1OT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vkxI1eT_EeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxI1uT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxI1-T_EeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_vkSnoOT_EeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxIweT_EeKSDdPH_NXL-g" x="192" y="209" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fMVFQOUAEeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFQuUAEeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFQ-UAEeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFROUAEeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFReUAEeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFRuUAEeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFR-UAEeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fMVFSOUAEeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFSeUAEeKSDdPH_NXL-g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_p9Xl8OUAEeKSDdPH_NXL-g" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_nVngkOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_p9Xl8eUAEeKSDdPH_NXL-g" x="39" y="11"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFSuUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFS-UAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFTOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFTeUAEeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFTuUAEeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFT-UAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFUOUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFUeUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFUuUAEeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFU-UAEeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFVOUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFVeUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFVuUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFV-UAEeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_fL2kIOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFQeUAEeKSDdPH_NXL-g" x="390" y="209" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gsWtkOUAEeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsWtkuUAEeKSDdPH_NXL-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsWtk-UAEeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsWtlOUAEeKSDdPH_NXL-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsc0MOUAEeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsc0MeUAEeKSDdPH_NXL-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsc0MuUAEeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gsc0M-UAEeKSDdPH_NXL-g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0NOUAEeKSDdPH_NXL-g" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0NeUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0NuUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0N-UAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0OOUAEeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0OeUAEeKSDdPH_NXL-g" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0OuUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0O-UAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0POUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0PeUAEeKSDdPH_NXL-g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0PuUAEeKSDdPH_NXL-g" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0P-UAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0QOUAEeKSDdPH_NXL-g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0QeUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0QuUAEeKSDdPH_NXL-g"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_gsEZsOUAEeKSDdPH_NXL-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsWtkeUAEeKSDdPH_NXL-g" x="604" y="217"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Rn740O-YEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn740u-YEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn740--YEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn741O-YEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn741e-YEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn741u-YEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn741--YEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Rn742O-YEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rn742e-YEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Rn742u-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Rn742--YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn743O-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn743e-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rn743u-YEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Rn743--YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Rn744O-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn744e-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn744u-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rn744--YEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Rn745O-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Rn745e-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn745u-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn745--YEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_RnjeUO-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn740e-YEeK0p4PkXjd-_Q" x="651" y="379"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZHO78O-YEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO78u-YEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO78--YEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO79O-YEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO79e-YEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO79u-YEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO79--YEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZHO7-O-YEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO7-e-YEeK0p4PkXjd-_Q" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_vpscQO-YEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_vpaIYO-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vpscQe-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yrtbwO-YEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_yrVBQO-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yrtbwe-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO7-u-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO7---YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO7_O-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO7_e-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO7_u-YEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO7_--YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO8AO-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO8Ae-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO8Au-YEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO8A--YEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO8BO-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO8Be-YEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO8Bu-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO8B--YEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ZGwa0O-YEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO78e-YEeK0p4PkXjd-_Q" y="204" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Ot3I0O-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I0u-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I0--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I1O-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I1e-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I1u-iEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I1--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ot3I2O-iEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I2e-iEeK0p4PkXjd-_Q" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_XmGU0O-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_Xlt6UO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XmGU0e-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bEXygO-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_bD8UsO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bEXyge-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eqEG0O-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_epxy8O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eqEG0e-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_indJcO-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_inEu8O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_indJce-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I2u-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I2--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I3O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I3e-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I3u-iEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I3--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I4O-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I4e-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I4u-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I4--iEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I5O-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I5e-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I5u-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I5--iEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_OtShEO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I0e-iEeK0p4PkXjd-_Q" x="148" y="374"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Q7FOUO-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOUu-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOU--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOVO-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOVe-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOVu-iEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOV--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q7FOWO-iEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOWe-iEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOWu-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOW--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOXO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOXe-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOXu-iEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOX--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOYO-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOYe-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOYu-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOY--iEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOZO-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOZe-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOZu-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOZ--iEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Q6ta4O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOUe-iEeK0p4PkXjd-_Q" x="799" y="398"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_j4XzEeT_EeKSDdPH_NXL-g"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_YC914OUAEeKSDdPH_NXL-g" type="4002" source="_vkxIwOT_EeKSDdPH_NXL-g" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YDD8gOUAEeKSDdPH_NXL-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YDD8geUAEeKSDdPH_NXL-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YC914eUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_YCxooOUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YC914uUAEeKSDdPH_NXL-g" points="[5, -13, -35, 79]$[34, -80, -6, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YDD8guUAEeKSDdPH_NXL-g" id="(0.5779816513761468,0.125)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YDD8g-UAEeKSDdPH_NXL-g" id="(0.31,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Y03M4OUAEeKSDdPH_NXL-g" type="4002" source="_tjX4wOT_EeKSDdPH_NXL-g" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y09TgOUAEeKSDdPH_NXL-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Y09TgeUAEeKSDdPH_NXL-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Y03M4eUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_Y0k5AOUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y03M4uUAEeKSDdPH_NXL-g" points="[-22, -7, 246, 68]$[-252, -60, 16, 15]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y09TguUAEeKSDdPH_NXL-g" id="(0.22,0.08)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y09Tg-UAEeKSDdPH_NXL-g" id="(0.3,0.77)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_iqWrUOUAEeKSDdPH_NXL-g" type="4002" source="_gsWtkOUAEeKSDdPH_NXL-g" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_iqcx8OUAEeKSDdPH_NXL-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iqcx8eUAEeKSDdPH_NXL-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iqWrUeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ip-Q0OUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iqWrUuUAEeKSDdPH_NXL-g" points="[11, -9, -112, 88]$[114, -92, -9, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iqgcUOUAEeKSDdPH_NXL-g" id="(0.38,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iqgcUeUAEeKSDdPH_NXL-g" id="(0.09,0.75)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jXrEUOUAEeKSDdPH_NXL-g" type="4002" source="_fMVFQOUAEeKSDdPH_NXL-g" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jXrEU-UAEeKSDdPH_NXL-g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jXrEVOUAEeKSDdPH_NXL-g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_jXrEUeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_jXYwcOUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jXrEUuUAEeKSDdPH_NXL-g" points="[-6, -9, 45, 75]$[-47, -72, 4, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jXrEVeUAEeKSDdPH_NXL-g" id="(0.36,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jXrEVuUAEeKSDdPH_NXL-g" id="(0.65,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uUewIOUAEeKSDdPH_NXL-g" type="4001" source="_fMVFQOUAEeKSDdPH_NXL-g" target="_vkxIwOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUfXMOUAEeKSDdPH_NXL-g" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUfXMeUAEeKSDdPH_NXL-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUfXMuUAEeKSDdPH_NXL-g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUfXM-UAEeKSDdPH_NXL-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUf-QOUAEeKSDdPH_NXL-g" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-QeUAEeKSDdPH_NXL-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUf-QuUAEeKSDdPH_NXL-g" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-Q-UAEeKSDdPH_NXL-g" x="-16" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUf-ROUAEeKSDdPH_NXL-g" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-ReUAEeKSDdPH_NXL-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uUf-RuUAEeKSDdPH_NXL-g" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-R-UAEeKSDdPH_NXL-g" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uUewIeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_uTre4OUAEeKSDdPH_NXL-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUewIuUAEeKSDdPH_NXL-g" points="[-1, 1, 73, 0]$[-72, 0, 2, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uUohIOUAEeKSDdPH_NXL-g" id="(0.009174311926605505,0.4175824175824176)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uUohIeUAEeKSDdPH_NXL-g" id="(0.981651376146789,0.42857142857142855)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_UJZI8O-YEeK0p4PkXjd-_Q" type="4002" source="_Rn740O-YEeK0p4PkXjd-_Q" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UJZI8--YEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UJZI9O-YEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UJZI8e-YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_UJAucO-YEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UJZI8u-YEeK0p4PkXjd-_Q" points="[0, -10, -17, 231]$[5, -224, -12, 17]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UJfPkO-YEeK0p4PkXjd-_Q" id="(0.56,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UJfPke-YEeK0p4PkXjd-_Q" id="(0.28,0.83)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ikHGEO-YEeK0p4PkXjd-_Q" type="4002" source="_ZHO78O-YEeK0p4PkXjd-_Q" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ikHGE--YEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ikHGFO-YEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ikHGEe-YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ijurkO-YEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ikHGEu-YEeK0p4PkXjd-_Q" points="[0, -6, -30, 236]$[30, -233, 0, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ikNMsO-YEeK0p4PkXjd-_Q" id="(0.67,0.06)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ikNMse-YEeK0p4PkXjd-_Q" id="(0.51,0.91)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_UKjbAO-iEeK0p4PkXjd-_Q" type="4002" source="_Q7FOUO-iEeK0p4PkXjd-_Q" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UKjbA--iEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UKjbBO-iEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UKjbAe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_UKLAgO-iEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UKjbAu-iEeK0p4PkXjd-_Q" points="[-2, -6, 76, 246]$[-75, -239, 3, 13]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UKjbBe-iEeK0p4PkXjd-_Q" id="(0.35,0.06)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UKjbBu-iEeK0p4PkXjd-_Q" id="(0.6,0.87)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_VIS1oO-iEeK0p4PkXjd-_Q" type="4002" source="_Ot3I0O-iEeK0p4PkXjd-_Q" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VIY8QO-iEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VIY8Qe-iEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_VIS1oe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_VH6bIO-iEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VIS1ou-iEeK0p4PkXjd-_Q" points="[6, -13, -118, 222]$[124, -227, 0, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VId0wO-iEeK0p4PkXjd-_Q" id="(0.76,0.13)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VId0we-iEeK0p4PkXjd-_Q" id="(0.54,0.92)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_UCFqMO3vEeKwLp35IbAIig" type="PapyrusUMLClassDiagram" name="PropertySetter" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_aL5hEO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hEu3vEeKwLp35IbAIig" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hE-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hFO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hFe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hFu3vEeKwLp35IbAIig" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hF-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aL5hGO3vEeKwLp35IbAIig" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nsO3vEeKwLp35IbAIig" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aL_nse3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nsu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_ns-3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_ntO3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nte3vEeKwLp35IbAIig" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aL_ntu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nt-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_nuO3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_nue3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nuu3vEeKwLp35IbAIig" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aL_nu-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nvO3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_nve3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_nvu3vEeKwLp35IbAIig"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_DN8s0NjhEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL5hEe3vEeKwLp35IbAIig" x="96" y="30"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aMFuUO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuUu3vEeKwLp35IbAIig" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuU-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuVO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuVe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuVu3vEeKwLp35IbAIig" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuV-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMFuWO3vEeKwLp35IbAIig" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuWe3vEeKwLp35IbAIig" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuWu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuW-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuXO3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuXe3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuXu3vEeKwLp35IbAIig" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_L7eCkO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_L7LusO5WEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_L7eCke5WEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kD_hwO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_fF4pAO5WEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kD_hwe5WEeK0p4PkXjd-_Q" x="61" y="25"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mDO1oO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_mCwUgO5WEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mDO1oe5WEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuX-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuYO3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuYe3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuYu3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuY-3vEeKwLp35IbAIig" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuZO3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuZe3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuZu3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuZ-3vEeKwLp35IbAIig"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_q85OgO3uEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuUe3vEeKwLp35IbAIig" x="96" y="198"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fyt_oO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_ou3vEeKwLp35IbAIig" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_o-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_pO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_pe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_pu3vEeKwLp35IbAIig" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_p-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fyt_qO3vEeKwLp35IbAIig" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fyt_qe3vEeKwLp35IbAIig" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_p4HscO5qEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_p3vR8O5qEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_p4Hsce5qEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fyt_qu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fyt_q-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fyt_rO3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_re3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fyt_ru3vEeKwLp35IbAIig" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_GQIF0O5VEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_GOgVMO5VEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GQIF0e5VEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fyt_r-3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fyt_sO3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fyt_se3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_su3vEeKwLp35IbAIig"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fy0GQO3vEeKwLp35IbAIig" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fy0GQe3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fy0GQu3vEeKwLp35IbAIig"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fy0GQ-3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fy0GRO3vEeKwLp35IbAIig"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_fyVlIO3vEeKwLp35IbAIig"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_oe3vEeKwLp35IbAIig" x="96" y="438"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_28aOsO5VEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVUO5VEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVUe5VEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVUu5VEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVU-5VEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVVO5VEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVVe5VEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_28gVVu5VEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_28mb8O5VEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_28mb8e5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_28mb8u5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb8-5VEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb9O5VEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_28mb9e5VEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_28mb9u5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_28mb9-5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb-O5VEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb-e5VEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_28mb-u5VEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_28mb--5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_28mb_O5VEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb_e5VEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb_u5VEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28aOse5VEeK0p4PkXjd-_Q" x="492" y="444"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_R-02sO5XEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02su5XEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02s-5XEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02tO5XEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02te5XEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02tu5XEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02t-5XEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_R-02uO5XEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_R-02ue5XEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_R-02uu5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_R-02u-5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02vO5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02ve5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_R-02vu5XEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_R-02v-5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_R-02wO5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02we5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02wu5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_R-02w-5XEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_R-02xO5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_R-02xe5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02xu5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02x-5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_R-WVkO5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02se5XEeK0p4PkXjd-_Q" x="24" y="611"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UfT2cO5XEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2cu5XEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2c-5XEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2dO5XEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2de5XEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2du5XEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2d-5XEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UfT2eO5XEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2ee5XEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2eu5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2e-5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2fO5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2fe5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2fu5XEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2f-5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2gO5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2ge5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2gu5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2g-5XEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2hO5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2he5XEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2hu5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2h-5XEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Ue7b8O5XEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2ce5XEeK0p4PkXjd-_Q" x="222" y="612"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JSk6cO5mEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6cu5mEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6c-5mEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6dO5mEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6de5mEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6du5mEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6d-5mEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cyvucO5mEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvuce5mEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvucu5mEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EClass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvuc-5mEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvudO5mEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvude5mEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JSk6eO5mEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6ee5mEeK0p4PkXjd-_Q" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_NCGgMO5mEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_NBuFsO5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NCGgMe5mEeK0p4PkXjd-_Q"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6eu5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6e-5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6fO5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6fe5mEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6fu5mEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6f-5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6gO5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6ge5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6gu5mEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6g-5mEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6hO5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6he5mEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6hu5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6h-5mEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_JSMf8O5mEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6ce5mEeK0p4PkXjd-_Q" x="528" y="210"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-0YU4O5zEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU4u5zEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU4-5zEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU5O5zEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU5e5zEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU5u5zEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU5-5zEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-0YU6O5zEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU6e5zEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU6u5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU6-5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU7O5zEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU7e5zEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU7u5zEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU7-5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU8O5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU8e5zEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU8u5zEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU8-5zEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU9O5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU9e5zEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU9u5zEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU9-5zEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_-z_6YO5zEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU4e5zEeK0p4PkXjd-_Q" x="420" y="612"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JhQv0O-cEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv0u-cEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv0--cEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv1O-cEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv1e-cEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv1u-cEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv1--cEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JhQv2O-cEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv2e-cEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv2u-cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv2--cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv3O-cEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv3e-cEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv3u-cEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv3--cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv4O-cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv4e-cEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv4u-cEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv4--cEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv5O-cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv5e-cEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv5u-cEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv5--cEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_JgyOsO-cEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv0e-cEeK0p4PkXjd-_Q" x="120" y="726"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GwJEUO-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEUu-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEU--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEVO-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEVe-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEVu-iEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEV--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GwJEWO-iEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEWe-iEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEWu-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEW--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEXO-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEXe-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEXu-iEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEX--iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEYO-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEYe-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEYu-iEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEY--iEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEZO-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEZe-iEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEZu-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEZ--iEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Gvwp0O-iEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEUe-iEeK0p4PkXjd-_Q" x="315" y="763"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xaib4O-lEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xajqAO-lEeK0p4PkXjd-_Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4IO-lEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xak4Ie-lEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4Iu-lEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xak4I--lEeK0p4PkXjd-_Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4JO-lEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xak4Je-lEeK0p4PkXjd-_Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xalfMO-lEeK0p4PkXjd-_Q" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xalfMe-lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xalfMu-lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfM--lEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfNO-lEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xalfNe-lEeK0p4PkXjd-_Q" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xalfNu-lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xalfN--lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfOO-lEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfOe-lEeK0p4PkXjd-_Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xalfOu-lEeK0p4PkXjd-_Q" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xalfO--lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xalfPO-lEeK0p4PkXjd-_Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfPe-lEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfPu-lEeK0p4PkXjd-_Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_xZ-bMO-lEeK0p4PkXjd-_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xaib4e-lEeK0p4PkXjd-_Q" x="509" y="764"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XyHrUBZ1EeOZwp016gnCFQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrUhZ1EeOZwp016gnCFQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrUxZ1EeOZwp016gnCFQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrVBZ1EeOZwp016gnCFQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrVRZ1EeOZwp016gnCFQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrVhZ1EeOZwp016gnCFQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrVxZ1EeOZwp016gnCFQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XyHrWBZ1EeOZwp016gnCFQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrWRZ1EeOZwp016gnCFQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrWhZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrWxZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrXBZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrXRZ1EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrXhZ1EeOZwp016gnCFQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrXxZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrYBZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrYRZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrYhZ1EeOZwp016gnCFQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrYxZ1EeOZwp016gnCFQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrZBZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrZRZ1EeOZwp016gnCFQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrZhZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrZxZ1EeOZwp016gnCFQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Xxh1cBZ1EeOZwp016gnCFQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrURZ1EeOZwp016gnCFQ" x="644" y="622"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_UCFqMe3vEeKwLp35IbAIig"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_aMR7kO3vEeKwLp35IbAIig" type="4001" source="_aL5hEO3vEeKwLp35IbAIig" target="_aMFuUO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7k-3vEeKwLp35IbAIig" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7lO3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7le3vEeKwLp35IbAIig" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7lu3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7l-3vEeKwLp35IbAIig" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7mO3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7me3vEeKwLp35IbAIig" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7mu3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7m-3vEeKwLp35IbAIig" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7nO3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aMR7ne3vEeKwLp35IbAIig" visible="false" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7nu3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aMR7ke3vEeKwLp35IbAIig" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_3GHqIO3uEeKwLp35IbAIig"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aMR7ku3vEeKwLp35IbAIig" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_iQEy4O3vEeKwLp35IbAIig" type="4001" source="_aMFuUO3vEeKwLp35IbAIig" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy4-3vEeKwLp35IbAIig" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy5O3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy5e3vEeKwLp35IbAIig" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy5u3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy5-3vEeKwLp35IbAIig" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy6O3vEeKwLp35IbAIig" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy6e3vEeKwLp35IbAIig" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy6u3vEeKwLp35IbAIig" y="65"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy6-3vEeKwLp35IbAIig" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy7O3vEeKwLp35IbAIig" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iQEy7e3vEeKwLp35IbAIig" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy7u3vEeKwLp35IbAIig" x="-12" y="-31"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_iQEy4e3vEeKwLp35IbAIig" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_iPmRwO3vEeKwLp35IbAIig"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iQEy4u3vEeKwLp35IbAIig" points="[-43, 56, 92, -120]$[-95, 124, 40, -52]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iQXGwO3vEeKwLp35IbAIig" id="(0.2196078431372549,0.8611111111111112)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iQXGwe3vEeKwLp35IbAIig" id="(0.2554112554112554,0.038461538461538464)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4DtN8O5VEeK0p4PkXjd-_Q" type="4001" source="_fyt_oO3vEeKwLp35IbAIig" target="_28aOsO5VEeK0p4PkXjd-_Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN8-5VEeK0p4PkXjd-_Q" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN9O5VEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN9e5VEeK0p4PkXjd-_Q" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN9u5VEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN9-5VEeK0p4PkXjd-_Q" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN-O5VEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN-e5VEeK0p4PkXjd-_Q" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN-u5VEeK0p4PkXjd-_Q" x="-33" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN--5VEeK0p4PkXjd-_Q" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN_O5VEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4DtN_e5VEeK0p4PkXjd-_Q" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN_u5VEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4DtN8e5VEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_4DImMO5VEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4DtN8u5VEeK0p4PkXjd-_Q" points="[6, -7, -170, 0]$[171, -10, -5, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4D_h0O5VEeK0p4PkXjd-_Q" id="(0.974025974025974,0.40384615384615385)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4D_h0e5VEeK0p4PkXjd-_Q" id="(0.05,0.29)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Y9OMMO5XEeK0p4PkXjd-_Q" type="4002" source="_R-02sO5XEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y9US0O5XEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Y9US0e5XEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Y9OMMe5XEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_Y8pkcO5XEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y9OMMu5XEeK0p4PkXjd-_Q" points="[12, -10, -97, 77]$[103, -79, -6, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y9US0u5XEeK0p4PkXjd-_Q" id="(0.41739130434782606,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y9US0-5XEeK0p4PkXjd-_Q" id="(0.36796536796536794,0.9230769230769231)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZyK3MO5XEeK0p4PkXjd-_Q" type="4002" source="_UfT2cO5XEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZyK3M-5XEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZyK3NO5XEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZyK3Me5XEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ZxycsO5XEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZyK3Mu5XEeK0p4PkXjd-_Q" points="[-8, -12, 50, 76]$[-56, -82, 2, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyXEcO5XEeK0p4PkXjd-_Q" id="(0.4642857142857143,0.12)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyXEce5XEeK0p4PkXjd-_Q" id="(0.5757575757575758,0.9423076923076923)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QgWvwO5mEeK0p4PkXjd-_Q" type="4001" source="_JSk6cO5mEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgX94O5mEeK0p4PkXjd-_Q" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgX94e5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgX94u5mEeK0p4PkXjd-_Q" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgX94-5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgYk8O5mEeK0p4PkXjd-_Q" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk8e5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgYk8u5mEeK0p4PkXjd-_Q" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk8-5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgYk9O5mEeK0p4PkXjd-_Q" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk9e5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QgYk9u5mEeK0p4PkXjd-_Q" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk9-5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_QgWvwe5mEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_QfvrwO5mEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QgWvwu5mEeK0p4PkXjd-_Q" points="[0, 15, 251, -111]$[0, 77, 251, -49]$[-251, 77, 0, -49]$[-251, 119, 0, -7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qghu4O5mEeK0p4PkXjd-_Q" id="(0.24342105263157895,0.8846153846153846)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qghu4e5mEeK0p4PkXjd-_Q" id="(0.9437229437229437,0.0673076923076923)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_hnJRkO5mEeK0p4PkXjd-_Q" type="4001" source="_aMFuUO3vEeKwLp35IbAIig" target="_JSk6cO5mEeK0p4PkXjd-_Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnJRk-5mEeK0p4PkXjd-_Q" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnJRlO5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYMO5mEeK0p4PkXjd-_Q" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYMe5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYMu5mEeK0p4PkXjd-_Q" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYM-5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYNO5mEeK0p4PkXjd-_Q" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYNe5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYNu5mEeK0p4PkXjd-_Q" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYN-5mEeK0p4PkXjd-_Q" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hnPYOO5mEeK0p4PkXjd-_Q" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYOe5mEeK0p4PkXjd-_Q" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_hnJRke5mEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_hmkp0O5mEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hnJRku5mEeK0p4PkXjd-_Q" points="[3, 3, -87, 0]$[90, 3, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hnVe0O5mEeK0p4PkXjd-_Q" id="(0.9882352941176471,0.5625)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hnVe0e5mEeK0p4PkXjd-_Q" id="(0.0,0.532258064516129)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_CpMqUO50EeK0p4PkXjd-_Q" type="4002" source="_-0YU4O5zEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CpMqU-50EeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CpMqVO50EeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_CpMqUe50EeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_Co0P0O50EeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CpMqUu50EeK0p4PkXjd-_Q" points="[-23, -11, 134, 67]$[-145, -70, 12, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CpSw8O50EeK0p4PkXjd-_Q" id="(0.21951219512195122,0.11)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CpSw8e50EeK0p4PkXjd-_Q" id="(0.8398268398268398,0.9304347826086956)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QK9AoO-cEeK0p4PkXjd-_Q" type="4002" source="_JhQv0O-cEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QK-OwO-cEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QK-Owe-cEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_QK9nsO-cEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_QKhi0O-cEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QK9nse-cEeK0p4PkXjd-_Q" points="[1, -9, -24, 183]$[22, -182, -3, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QLCgMO-cEeK0p4PkXjd-_Q" id="(0.43902439024390244,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QLCgMe-cEeK0p4PkXjd-_Q" id="(0.4458874458874459,0.9130434782608695)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LuSZUO-iEeK0p4PkXjd-_Q" type="4002" source="_GwJEUO-iEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LuSZU--iEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LuSZVO-iEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LuSZUe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_LuAFcO-iEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LuSZUu-iEeK0p4PkXjd-_Q" points="[-7, -15, 94, 223]$[-85, -225, 16, 13]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LuYf8O-iEeK0p4PkXjd-_Q" id="(0.424,0.15)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LuYf8e-iEeK0p4PkXjd-_Q" id="(0.7402597402597403,0.8869565217391304)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_02FVsO-lEeK0p4PkXjd-_Q" type="4002" source="_xaib4O-lEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_02LcUO-lEeK0p4PkXjd-_Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_02LcUe-lEeK0p4PkXjd-_Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_02FVse-lEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_01zB0O-lEeK0p4PkXjd-_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_02FVsu-lEeK0p4PkXjd-_Q" points="[-7, -5, 274, 229]$[-252, -216, 29, 18]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_02LcUu-lEeK0p4PkXjd-_Q" id="(0.32,0.05)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_02LcU--lEeK0p4PkXjd-_Q" id="(0.7792207792207793,0.8434782608695652)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_a9MgMBZ1EeOZwp016gnCFQ" type="4002" source="_XyHrUBZ1EeOZwp016gnCFQ" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_a9MgMxZ1EeOZwp016gnCFQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a9MgNBZ1EeOZwp016gnCFQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_a9MgMRZ1EeOZwp016gnCFQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_a8mqUBZ1EeOZwp016gnCFQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a9MgMhZ1EeOZwp016gnCFQ" points="[-31, -7, 335, 78]$[-352, -79, 14, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a9MgNRZ1EeOZwp016gnCFQ" id="(0.26515151515151514,0.07)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a9MgNhZ1EeOZwp016gnCFQ" id="(0.9393939393939394,0.9217391304347826)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Up8U8P91EeKlldop5b2mtw" type="PapyrusUMLClassDiagram" name="LayerOperators" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_mqw8QAkcEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq3C4AkcEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq3C4QkcEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq9JgAkcEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq9JgQkcEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq9JggkcEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq9JgwkcEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mq9JhAkcEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JhQkcEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_FKWlwAw_EeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#__XEYgAw-EeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FKWlwQw_EeOjX-JbGFEH7w" x="85" y="11"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JhgkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JhwkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JiAkcEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JiQkcEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JigkcEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_Dh-88AxDEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_Dhl7YAxDEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Dh-88QxDEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0VwJkA3SEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_0VaLUA3SEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0VwJkQ3SEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JiwkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JjAkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JjQkcEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JjgkcEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JjwkcEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JkAkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JkQkcEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JkgkcEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JkwkcEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_WuVRUNjjEeKQqZMBCFd2Uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mqw8QQkcEeOnVqX9VcfeWQ" x="-162" y="246"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GLILsAkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILsgkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILswkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILtAkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILtQkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILtgkdEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILtwkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GLILuAkdEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GLILuQkdEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_ysgoIAkiEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_ysOUQAkiEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ysgoIQkiEeOnVqX9VcfeWQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GLILugkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GLILuwkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GLILvAkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLILvQkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GLOSUAkdEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_w6KWMAkhEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_w5x7sAkhEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w6KWMQkhEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T0Ap8AkiEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_TzuWEAkiEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_T0Ap8QkiEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_huCU0AkiEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_htp6UAkiEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_huCU0QkiEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_okYS0AkoEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_oj_4UAkoEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_okYS0QkoEeOnVqX9VcfeWQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GLOSUQkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GLOSUgkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GLOSUwkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLOSVAkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GLOSVQkdEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GLOSVgkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GLOSVwkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GLOSWAkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLOSWQkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_GKddUAkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLILsQkdEeOnVqX9VcfeWQ" x="288" y="222" width="391"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T6PAAAkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PAAgkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PAAwkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PABAkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PABQkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PABgkdEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PABwkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T6PACAkdEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T6PACQkdEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_TfenkAkmEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_TfMTsAkmEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TfenkQkmEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rUDAsA2fEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1yttEA2hEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yttEQ2hEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIA2hEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EReference"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIQ2hEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIg2hEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIw2hEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="layers.uml#_rTr0UA2fEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rUDAsQ2fEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T6PACgkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T6PACwkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PADAkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PADQkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T6PADgkdEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_ZkDggAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_ZjkYUAkjEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZkDggQkjEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1LL0kAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_sQbgEAkjEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1LL0kQkjEeOnVqX9VcfeWQ" x="80" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6U7VkAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_6Ui7EAkjEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6U7VkQkjEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NyJjQAkkEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_HQzWIAkkEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJjQQkkEeOnVqX9VcfeWQ" x="69" y="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_U31MgAkkEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_U3cyAAkkEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_U31MgQkkEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wq9owBKGEeO9e9pZ1EIGJg" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_p1keQBKGEeO9e9pZ1EIGJg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wq9owRKGEeO9e9pZ1EIGJg" x="108" y="97"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T6PADwkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T6PAEAkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PAEQkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAEgkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T6PAEwkdEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T6PAFAkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_T6PAFQkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PAFgkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAFwkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_T5we4AkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAAQkdEeOnVqX9VcfeWQ" x="294" y="-132"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wlZj8AkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj8gkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj8wkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj9AkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj9QkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj9gkdEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj9wkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wlZj-AkdEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wlZj-QkdEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_AmaP0AkmEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_8J3zEAklEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AmaP0QkmEeOnVqX9VcfeWQ" x="78" y="14"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wlZj-gkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wlZj-wkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZj_AkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZj_QkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wlZj_gkdEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_oF32EAkhEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_WKdZYAkhEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oF32EQkhEeOnVqX9VcfeWQ" x="77" y="23"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wlZj_wkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wlZkAAkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZkAQkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZkAgkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wlZkAwkdEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wlZkBAkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wlZkBQkdEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZkBgkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZkBwkdEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_wk7C0AkdEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZj8QkdEeOnVqX9VcfeWQ" x="822" y="222" width="138"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_G-_bIAkpEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bIgkpEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bIwkpEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bJAkpEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bJQkpEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bJgkpEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bJwkpEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G-_bKAkpEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bKQkpEeOnVqX9VcfeWQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bKgkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bKwkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bLAkpEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bLQkpEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bLgkpEeOnVqX9VcfeWQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bLwkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bMAkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bMQkpEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bMgkpEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bMwkpEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bNAkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bNQkpEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bNgkpEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bNwkpEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_G-g6AAkpEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bIQkpEeOnVqX9VcfeWQ" x="696" y="378"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ELjJgAkxEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJggkxEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJgwkxEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJhAkxEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJhQkxEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJhgkxEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJhwkxEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ELjJiAkxEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJiQkxEeOnVqX9VcfeWQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJigkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJiwkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJjAkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJjQkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJjgkxEeOnVqX9VcfeWQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJjwkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJkAkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJkQkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJkgkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJkwkxEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJlAkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJlQkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJlgkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJlwkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_ELKvAAkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJgQkxEeOnVqX9VcfeWQ" x="246" y="492" width="208"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HyFLUAkxEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLUgkxEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyFLUwkxEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLVAkxEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyFLVQkxEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLVgkxEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyLR8AkxEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HyLR8QkxEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR8gkxEeOnVqX9VcfeWQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR8wkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR9AkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR9QkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLR9gkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR9wkxEeOnVqX9VcfeWQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR-AkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR-QkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR-gkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLR-wkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR_AkxEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR_QkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR_gkxEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR_wkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLSAAkxEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_Hxsw0AkxEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyFLUQkxEeOnVqX9VcfeWQ" x="522" y="492" width="229"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_muS64AnsEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS64gnsEeOnVqX9VcfeWQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS64wnsEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS65AnsEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS65QnsEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS65gnsEeOnVqX9VcfeWQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS65wnsEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_muS66AnsEeOnVqX9VcfeWQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_muS66QnsEeOnVqX9VcfeWQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_zQxkAAnsEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_yEySAAnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zQxkAQnsEeOnVqX9VcfeWQ" x="59" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XTyfQAntEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_XTdvIAntEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XTyfQQntEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uNebYA3gEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Property" href="layers.uml#_XwmlsA3gEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uNebYQ3gEeOjX-JbGFEH7w" x="54" y="45"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_muS66gnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_muS66wnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_muS67AnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS67QnsEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_muS67gnsEeOnVqX9VcfeWQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_vb3hIA3gEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+ <element xmi:type="uml:Operation" href="layers.uml#_vbiJ8A3gEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vb3hIQ3gEeOjX-JbGFEH7w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_muS67wnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_muS68AnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_muS68QnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS68gnsEeOnVqX9VcfeWQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_muS68wnsEeOnVqX9VcfeWQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_muS69AnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_muS69QnsEeOnVqX9VcfeWQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_muS69gnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS69wnsEeOnVqX9VcfeWQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_mt6gYAnsEeOnVqX9VcfeWQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS64QnsEeOnVqX9VcfeWQ" x="924" y="378" width="229" height="127"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_G71l8AxJEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l8gxJEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l8wxJEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l9AxJEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l9QxJEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l9gxJEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l9wxJEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G71l-AxJEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G71l-QxJEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G71l-gxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G71l-wxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G71l_AxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71l_QxJEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G71l_gxJEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G71l_wxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G71mAAxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G71mAQxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71mAgxJEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G71mAwxJEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_G71mBAxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G71mBQxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G71mBgxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71mBwxJEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_G7XE0AxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71l8QxJEeOjX-JbGFEH7w" x="672" y="666" width="262"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LU3bsAxJEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3bsgxJEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3bswxJEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3btAxJEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3btQxJEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3btgxJEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3btwxJEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LU3buAxJEeOjX-JbGFEH7w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LU3buQxJEeOjX-JbGFEH7w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bugxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LU3buwxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bvAxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bvQxJEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LU3bvgxJEeOjX-JbGFEH7w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bvwxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LU3bwAxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bwQxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bwgxJEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LU3bwwxJEeOjX-JbGFEH7w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bxAxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LU3bxQxJEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bxgxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bxwxJEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:Class" href="layers.uml#_LUfBMAxJEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bsQxJEeOjX-JbGFEH7w" x="390" y="666" width="255"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__Arl4AxLEeOjX-JbGFEH7w" type="2009" fontName="Segoe UI" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__AsM8AxLEeOjX-JbGFEH7w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0AAxLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__As0AQxLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0AgxLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__As0AwxLEeOjX-JbGFEH7w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0BAxLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fy5gkAxMEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkQxMEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkgxMEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EDataType"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkwxMEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5glAxMEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5glQxMEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__As0BQxLEeOjX-JbGFEH7w" type="5032"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__As0BgxLEeOjX-JbGFEH7w" type="7039">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__As0BwxLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__As0CAxLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__As0CQxLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__As0CgxLEeOjX-JbGFEH7w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__AtbEAxLEeOjX-JbGFEH7w" type="7040">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__AtbEQxLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__AtbEgxLEeOjX-JbGFEH7w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__AtbEwxLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__AtbFAxLEeOjX-JbGFEH7w"/>
+ </children>
+ <element xmi:type="uml:PrimitiveType" href="layers.uml#__ADTwAxLEeOjX-JbGFEH7w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__Arl4QxLEeOjX-JbGFEH7w" x="1056" y="240" width="234"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Up8U8f91EeKlldop5b2mtw"/>
+ <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_KTjZoAkdEeOnVqX9VcfeWQ" type="4001" source="_mqw8QAkcEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTknwAkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO0AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTlO0QkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO0gkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTlO0wkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO1AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTlO1QkdEeOnVqX9VcfeWQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl14AkdEeOnVqX9VcfeWQ" x="-47" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTl14QkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl14gkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KTl14wkdEeOnVqX9VcfeWQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl15AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_KTjZoQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_KSvhUAkdEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KTjZogkdEeOnVqX9VcfeWQ" points="[5, 6, -146, 0]$[151, 6, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTyqMAkdEeOnVqX9VcfeWQ" id="(0.9662162162162162,0.42)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTyqMQkdEeOnVqX9VcfeWQ" id="(0.0,0.42)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_X849IAkdEeOnVqX9VcfeWQ" type="4001" source="_T6PAAAkdEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849IwkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849JAkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849JQkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849JgkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849JwkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849KAkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849KQkdEeOnVqX9VcfeWQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849KgkdEeOnVqX9VcfeWQ" x="-2" y="56"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849KwkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849LAkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X849LQkdEeOnVqX9VcfeWQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X849LgkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_X849IQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_X8acAAkdEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_X849IgkdEeOnVqX9VcfeWQ" points="[-3, 5, 0, -56]$[-3, 60, 0, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X9FKYAkdEeOnVqX9VcfeWQ" id="(0.5089058524173028,0.9794871794871794)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X9FKYQkdEeOnVqX9VcfeWQ" id="(0.5133689839572193,0.01)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_32P7YAkdEeOnVqX9VcfeWQ" type="4001" source="_T6PAAAkdEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_32QicAkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJgAkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RJgQkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJggkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RJgwkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJhAkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RJhQkdEeOnVqX9VcfeWQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJhgkdEeOnVqX9VcfeWQ" x="1" y="-89"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RJhwkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RwkAkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_32RwkQkdEeOnVqX9VcfeWQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_32RwkgkdEeOnVqX9VcfeWQ" x="41" y="-66"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_32P7YQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_31lNAAkdEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_32P7YgkdEeOnVqX9VcfeWQ" points="[10, 0, -100, -121]$[116, 0, 6, -121]$[116, 117, 6, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_32aTcAkdEeOnVqX9VcfeWQ" id="(0.981651376146789,0.64)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_32a6gAkdEeOnVqX9VcfeWQ" id="(0.6521739130434783,0.038461538461538464)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5yYQ4AkdEeOnVqX9VcfeWQ" type="4001" source="_GLILsAkdEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ4wkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ5AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ5QkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ5gkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ5wkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ6AkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ6QkdEeOnVqX9VcfeWQ" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ6gkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ6wkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ7AkdEeOnVqX9VcfeWQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ7QkdEeOnVqX9VcfeWQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ7gkdEeOnVqX9VcfeWQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5yYQ4QkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="layers.uml#_5x5vwAkdEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5yYQ4gkdEeOnVqX9VcfeWQ" points="[9, 0, -194, -12]$[200, 12, -3, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ykeIAkdEeOnVqX9VcfeWQ" id="(0.983957219251337,0.3282051282051282)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ykeIQkdEeOnVqX9VcfeWQ" id="(0.021739130434782608,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LBOhgAkpEeOnVqX9VcfeWQ" type="4002" source="_G-_bIAkpEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LBOhgwkpEeOnVqX9VcfeWQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LBOhhAkpEeOnVqX9VcfeWQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LBOhgQkpEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_LAjzIAkpEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LBOhggkpEeOnVqX9VcfeWQ" points="[9, -8, -57, 50]$[60, -49, -6, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBUoIAkpEeOnVqX9VcfeWQ" id="(0.608433734939759,0.08)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBUoIQkpEeOnVqX9VcfeWQ" id="(0.2971014492753623,0.9217391304347826)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OOdY4AkxEeOnVqX9VcfeWQ" type="4002" source="_ELjJgAkxEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OOdY4wkxEeOnVqX9VcfeWQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OOdY5AkxEeOnVqX9VcfeWQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OOdY4QkxEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_ON-3wAkxEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OOdY4gkxEeOnVqX9VcfeWQ" points="[7, -9, -86, 106]$[87, -104, -6, 11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OOjfgAkxEeOnVqX9VcfeWQ" id="(0.5048076923076923,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OOjfgQkxEeOnVqX9VcfeWQ" id="(0.2887700534759358,0.9371428571428572)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_PRQSoAkxEeOnVqX9VcfeWQ" type="4002" source="_HyFLUAkxEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PRQSowkxEeOnVqX9VcfeWQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PRQSpAkxEeOnVqX9VcfeWQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_PRQSoQkxEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_PQ9-wAkxEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PRQSogkxEeOnVqX9VcfeWQ" points="[-6, -10, 54, 109]$[-55, -105, 5, 14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PRWZQAkxEeOnVqX9VcfeWQ" id="(0.2183406113537118,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PRWZQQkxEeOnVqX9VcfeWQ" id="(0.6524064171122995,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_SfzL0AntEeOnVqX9VcfeWQ" type="4002" source="_muS64AnsEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Sf0Z8AntEeOnVqX9VcfeWQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Sf0Z8QntEeOnVqX9VcfeWQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_SfzL0QntEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_SfZjMAntEeOnVqX9VcfeWQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SfzL0gntEeOnVqX9VcfeWQ" points="[-13, -10, 65, 50]$[-73, -51, 5, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sf4EUAntEeOnVqX9VcfeWQ" id="(0.4245810055865922,0.09615384615384616)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sf4EUQntEeOnVqX9VcfeWQ" id="(0.7246376811594203,0.9217391304347826)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_TziRIAxJEeOjX-JbGFEH7w" type="4002" source="_LU3bsAxJEeOjX-JbGFEH7w" target="_HyFLUAkxEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TziRIwxJEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TziRJAxJEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_TziRIQxJEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_TzDwAAxJEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TziRIgxJEeOjX-JbGFEH7w" points="[0, 0, 0, 74]$[0, -74, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TzoXwAxJEeOjX-JbGFEH7w" id="(0.7568627450980392,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TzoXwQxJEeOjX-JbGFEH7w" id="(0.2663755458515284,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_UrLDwAxJEeOjX-JbGFEH7w" type="4002" source="_G71l8AxJEeOjX-JbGFEH7w" target="_HyFLUAkxEeOnVqX9VcfeWQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UrLDwwxJEeOjX-JbGFEH7w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UrRKYAxJEeOjX-JbGFEH7w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UrLDwQxJEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="layers.uml#_Uq4v4AxJEeOjX-JbGFEH7w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UrLDwgxJEeOjX-JbGFEH7w" points="[0, 0, 0, 74]$[0, -74, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UrRKYQxJEeOjX-JbGFEH7w" id="(0.14885496183206107,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UrRKYgxJEeOjX-JbGFEH7w" id="(0.8253275109170306,1.0)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImplTest.java
new file mode 100644
index 00000000000..664baf63a48
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImplTest.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerOperatorConfigImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl#LayerOperatorConfigImpl()}.
+ */
+ @Test
+ public void testLayerOperatorConfigImpl() {
+
+ // Create object
+ LayerOperatorConfig config = LayersconfigFactory.eINSTANCE.createLayerOperatorConfig();
+ config.setClassname(LayersPackage.eINSTANCE.getLayerOperatorDescriptor().getName());
+
+
+ assertNotNull("object created", config);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl#createLayersOperatorDescriptor()}.
+ * @throws InstanciationException
+ */
+ @Test
+ public void testCreateLayersOperatorDescriptor() throws InstanciationException {
+ // Create object
+ LayerOperatorConfig config = LayersconfigFactory.eINSTANCE.createLayerOperatorConfig();
+ config.setClassname(LayersPackage.eINSTANCE.getLayerOperatorDescriptor().getName());
+
+ // check creation
+ LayerOperatorDescriptor desc =config.createLayersOperatorDescriptor();
+ assertNotNull("desc created", desc);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImplTest.java
new file mode 100644
index 00000000000..b435c9faa8e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImplTest.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class OperatorConfigImplTest {
+
+ protected String BUNDLE_ID = "org.eclipse.papyrus.layers.stackmodel";
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl#OperatorConfigImpl()}.
+ */
+ @Test
+ public void testOperatorConfigImpl() {
+ // Create new object
+ OperatorConfig opConfig = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+
+ assertNotNull("instance created", opConfig);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl#createOperatorDescriptor()}.
+ */
+// @Test
+// public void testCreateOperatorDescriptor() {
+// // Create new object
+// OperatorConfig opConfig = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+//
+// assertNotNull("instance created", opConfig);
+// }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl#createPojoInstance()}.
+ * @throws InstanciationException
+ */
+ @Test
+ public void testCreatePojoInstance() throws InstanciationException {
+ // Create new object
+ OperatorConfig opConfig = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+ opConfig.setClassname(BooleanAndOperator.class.getName());
+ opConfig.setBundleID(BUNDLE_ID);
+
+ PropertyOperator operator = opConfig.createOperatorDescriptor();
+
+ assertNotNull("operator created", operator);
+ assertTrue("operator type", operator instanceof CustomPropertyOperator);
+ assertNotNull("operator nested instance created", ((CustomPropertyOperator)operator).getOperatorInstance());
+ assertSame("classnameKind is changed", ClassnameKind.POJO_CLASSNAME, opConfig.getClassnameKind());
+ // Try a second time
+ operator = opConfig.createOperatorDescriptor();
+
+ assertNotNull("operator created", operator);
+ assertTrue("operator type", operator instanceof CustomPropertyOperator);
+ assertNotNull("operator nested instance created", ((CustomPropertyOperator)operator).getOperatorInstance());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl#createEmfInstance()}.
+ * @throws InstanciationException
+ */
+ @Test
+ public void testCreateEmfInstance() throws InstanciationException {
+ // Create new object
+ OperatorConfig opConfig = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+ opConfig.setClassname(LayersPackage.eINSTANCE.getDefaultPropertyOperator().getName());
+
+ PropertyOperator operator = opConfig.createOperatorDescriptor();
+
+ assertNotNull("operator created", operator);
+ assertTrue("operator type", operator instanceof DefaultPropertyOperator);
+ assertSame("classnameKind is changed", ClassnameKind.EMF_CLASSNAME, opConfig.getClassnameKind());
+ // Try a second time
+ operator = opConfig.createOperatorDescriptor();
+
+ assertNotNull("operator created", operator);
+ assertTrue("operator type", operator instanceof DefaultPropertyOperator);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/ManageExtPropertyTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/ManageExtPropertyTest.java
new file mode 100644
index 00000000000..314f66f1068
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/ManageExtPropertyTest.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ManageExtPropertyTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.gmf.runtime.notation.NamedStyle#getName()}.
+ */
+ @Test
+ @Ignore
+ public void testCreateExtPropertyInstance() {
+ fail("Not yet implemented");
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactoryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactoryTest.java
new file mode 100644
index 00000000000..b3b91da3c41
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactoryTest.java
@@ -0,0 +1,149 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.emf.ecore.EObject;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ *
+ * @author dumoulin
+ *
+ *
+ */
+public class PropertyValueFactoryTest {
+
+ private static final String PROPERTY_NAME = "name";
+ public static final String LOCAL_NSURI = "org.eclipse.papyrus.layers.0.10";
+ public static final String EXT_NSURI = "org.eclipse.papyrus.extpropertymodel.0.10";
+ public static final String CLASS_LAYER = "Layer";
+ public static final String CLASS_EXTPROPERTY = "StringAndIntPropertyValue";
+
+
+ /**
+ * Initialize EMF registry for standalone tests.
+ * Do not do it for plugin tests
+ *
+ */
+ @BeforeClass
+ static public void setRegistry() {
+
+
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.PropertyValueFactory#newInstance(java.lang.String, java.lang.String)}.
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ */
+ @Test
+ @Ignore
+ public void testLocalNewInstance() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+ PropertyValueFactory factory = new PropertyValueFactory();
+ Object instance = factory.newInstance("org.eclipse.papyrus.layers.stackmodel", "org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl");
+
+
+ assertNotNull("instance created", instance);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.PropertyValueFactory#loadClass(java.lang.String, java.lang.String)}.
+ * @throws ClassNotFoundException
+ */
+ @Test
+ public void testLoadLocalClass() throws ClassNotFoundException {
+
+ // Try to load a local class
+ PropertyValueFactory factory = new PropertyValueFactory();
+ Class<?> type = factory.loadClass("org.eclipse.papyrus.layers.stackmodel", "org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl");
+
+
+ assertNotNull("class loaded", type);
+ }
+
+ /**
+ * Test method
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ */
+ @Test
+ public void testLocalnewEClassInstance() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+ PropertyValueFactory factory = new PropertyValueFactory();
+ Object instance = factory.newEClassInstance(LOCAL_NSURI, CLASS_LAYER);
+
+
+ assertNotNull("instance created", instance);
+ }
+
+ /**
+ * Test method
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ */
+ @Test
+ @Ignore
+ public void testDistnewEClassInstance() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+ PropertyValueFactory factory = new PropertyValueFactory();
+ Object instance = factory.newEClassInstance(EXT_NSURI, CLASS_EXTPROPERTY);
+
+
+ assertNotNull("instance created", instance);
+ }
+
+ /**
+ * Test method
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ */
+ @Test
+ @Ignore
+ public void testSetValue() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+ PropertyValueFactory factory = new PropertyValueFactory();
+ EObject instance = factory.newEClassInstance(EXT_NSURI, CLASS_EXTPROPERTY);
+
+ String value = "John Doe";
+ factory.setEObjectPropertyValue(instance, PROPERTY_NAME, value);
+
+ // Try to get the value
+ Object res = factory.getEObjectPropertyValue(instance, PROPERTY_NAME);
+
+ assertNotNull("value found", res);
+ assertEquals("value found", value, res);
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java
new file mode 100644
index 00000000000..74bbf353ed8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java
@@ -0,0 +1,451 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.util.FakeObservableListListener;
+import org.eclipse.papyrus.layers.stackmodel.util.ObservableListView;
+import org.eclipse.uml2.uml.NamedElement;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ExpressionMatcherTest {
+
+ /**
+ * Name of the plugin that is created.
+ */
+ final protected String PLUGIN_PROJECT_NAME = "org.eclipse.papyrus.layers.stackmodel";
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * @param modelFileName
+ * @param modelNotationKey
+ * @return
+ */
+ private Resource getResource(String modelFileName, String modelNotationKey) {
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+
+ URI uri = URI.createPlatformPluginURI(PLUGIN_PROJECT_NAME+ modelFileName + "." + modelNotationKey, true);
+// URI uri = URI.createPlatformPluginURI("/org.eclipse.papyrus.layers.stackmodel/model/layers.notation", true);
+
+
+ System.out.println("URI=" + uri.toString());
+ Resource resource = resourceSet.getResource(uri, true);
+ return resource;
+ }
+
+ /**
+ * Get the diagram contained in the specified resource.
+ * @param modelFileName
+ * @return
+ */
+ private Diagram getDiagram( String modelFileName ) {
+
+ // Get the Resource containing the diagram
+ EObject root = getResource(modelFileName, "notation").getContents().get(0);
+
+ return (Diagram)root;
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#ExpressionMatcher(java.lang.String, java.util.List)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testExpressionMatcher() throws LayersException {
+
+
+ String expression = "self.oclIsKindOf(Shape)";
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+// "self.oclAsType(Shape).visible = true",
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+ List<EObject> searchRoots = diagram.getChildren();
+
+ ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+ assertNotNull("object created", expressionMatcher);
+
+ }
+
+ /**
+ * Test an expression
+ * @throws LayersException
+ */
+ @Test
+ public void testExpression() throws LayersException {
+
+// Shape s;
+// ((NamedElement)s.getElement()).getName().startsWith(prefix);
+
+ String expression = "self.oclAsType(Shape).visible = true";
+// self.oclAsType(Shape).element.oclAsType(uml::NamedElement).name.startsWith('C') = true
+// "self.element.oclAsType(uml::NamedElement).name.startsWith('C') = true";
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+// "self.oclAsType(Shape).visible = true",
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+ List<EObject> searchRoots = diagram.getChildren();
+
+ ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+ assertNotNull("object created", expressionMatcher);
+
+ // Expression with uml can't works because there is no uml model.
+ assertTrue("result not empty", !expressionMatcher.getMatchingElements().isEmpty());
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#ExpressionMatcher(java.lang.String, java.util.List)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testExpressionMatcherWithWrongExpr() throws LayersException {
+
+ // Wrong expr
+ String expression = "self.o";
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+ List<EObject> searchRoots = diagram.getChildren();
+
+
+ ExpressionMatcher expressionMatcher;
+ try {
+ expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+ } catch (Exception e) {
+ // shoul have one
+ return;
+ }
+ fail("An exception should be thrown");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#refreshMatchingElements()}.
+ * @throws LayersException
+ */
+ @Test
+ public void testRefreshMatchingElements() throws LayersException {
+ String expression = "self.oclIsKindOf(Shape)";
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+// "self.oclAsType(Shape).visible = true",
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+ List<EObject> searchRoots = diagram.getChildren();
+
+ ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+ assertNotNull("object created", expressionMatcher);
+ assertTrue( "elements founds", expressionMatcher.getMatchingElements().size()>0 );
+
+ // Call refresh
+ expressionMatcher.refreshMatchingElements();
+ assertEquals( "elements founds", 20, expressionMatcher.getMatchingElements().size() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#getExpression()}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetExpression() throws LayersException {
+ String expression = "self.oclIsKindOf(Shape)";
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+ List<EObject> searchRoots = diagram.getChildren();
+
+ ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+
+ assertEquals("expression found", expression, expressionMatcher.getExpression());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#setExpression(java.lang.String)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testSetExpression() throws LayersException {
+ String expression = "self.oclIsKindOf(Shape)";
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+// "self.oclAsType(Shape).visible = true",
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+ List<EObject> searchRoots = diagram.getChildren();
+
+ ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+ assertNotNull("object created", expressionMatcher);
+ assertTrue( "elements founds", expressionMatcher.getMatchingElements().size()>0 );
+
+ // Set the expression
+ expressionMatcher.setExpression("self.oclAsType(Shape).visible = true");
+ assertTrue( "elements founds", expressionMatcher.getMatchingElements().size()>0 );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#getMatchingElements()}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetMatchingElements() throws LayersException {
+ String expression = "self.oclIsKindOf(Shape)";
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+// "self.oclAsType(Shape).visible = true",
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+ List<EObject> searchRoots = diagram.getChildren();
+
+ ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+ assertNotNull("object created", expressionMatcher);
+ assertTrue( "elements founds", expressionMatcher.getMatchingElements().size()>0 );
+ assertEquals( "elements founds", 20, expressionMatcher.getMatchingElements().size() );
+ }
+
+ /**
+ * Test if the resource needed for the test exists.
+ *
+ * @throws ModelMultiException
+ */
+ @Test
+ public void testResourceExist() throws IOException, CoreException {
+
+ String modelNotationKey = "notation";
+ String modelUMLKey = "uml";
+
+ String modelFileName = "/test/models/model1";
+
+ Resource resource = getResource(modelFileName, modelNotationKey);
+
+ assertNotNull("modelFile exist", resource);
+ assertTrue("model is loaded", !resource.getContents().isEmpty());
+ }
+
+ /**
+ * Test if the resource needed for the test exists.
+ *
+ * @throws ModelMultiException
+ */
+ @Test
+ public void testDiagramExist() throws IOException, CoreException {
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+
+ assertNotNull("Diagram exist", diagram);
+ }
+
+ /**
+ * Test removing elements.
+ * @throws LayersException
+ */
+ @Test
+ public void testRemoveElements() throws LayersException {
+ String expression = "self.oclIsKindOf(Shape)";
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+// "self.oclAsType(Shape).visible = true",
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+
+ int removedElementCount = 5;
+ int addedElementCount = 0;
+ int expectedEventCount = 1;
+
+ ObservableListView<View> matchingElements = new ObservableListView<View>();
+ ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, matchingElements, diagram);
+
+ FakeObservableListListener<View> notifyingListListener = new FakeObservableListListener<View>();
+ matchingElements.getEventBus().register(notifyingListListener);
+
+ // Action
+ notifyingListListener.traces.clear();
+ removeElements(diagram, removedElementCount);
+ expressionMatcher.refreshMatchingElements();
+
+ // Assert
+ assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+
+ ObservableListView<View>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+
+ assertEquals("expected removed count", removedElementCount, event.getRemovedElements().size());
+ assertEquals("expected added count", addedElementCount, event.getAddedElements().size());
+ }
+
+ /**
+ * Test removing elements.
+ * @throws LayersException
+ */
+ @Test
+ public void testAddElements() throws LayersException {
+ String expression = "self.oclIsKindOf(Shape)";
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+// "self.oclAsType(Shape).visible = true",
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+
+ int removedElementCount = 0;
+ int addedElementCount = 5;
+ int expectedEventCount = 1;
+ int viewsCount = diagram.getChildren().size();
+
+ ObservableListView<View> matchingElements = new ObservableListView<View>();
+ ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, matchingElements, diagram);
+
+ FakeObservableListListener<View> notifyingListListener = new FakeObservableListListener<View>();
+ matchingElements.getEventBus().register(notifyingListListener);
+
+ // Action
+ notifyingListListener.traces.clear();
+ addShapeElements(diagram, addedElementCount);
+ removeElements(diagram, removedElementCount);
+ expressionMatcher.refreshMatchingElements();
+
+ // Assert
+ assertSame("elements added", viewsCount+addedElementCount, diagram.getChildren().size());
+
+ assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+
+ ObservableListView<View>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+
+ assertEquals("expected removed count", removedElementCount, event.getRemovedElements().size());
+ assertEquals("expected added count", addedElementCount, event.getAddedElements().size());
+ }
+
+ /**
+ * Test removing elements.
+ * @throws LayersException
+ */
+ @Test
+ public void testAddAndRemoveElements() throws LayersException {
+ String expression = "self.oclIsKindOf(Shape)";
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+// "self.oclAsType(Shape).visible = true",
+
+ String modelFileName = "/test/models/model1";
+ Diagram diagram = getDiagram(modelFileName);
+
+ int removedElementCount = 4;
+ int addedElementCount = 5;
+ int expectedEventCount = 1;
+ int viewsCount = diagram.getChildren().size();
+
+ ObservableListView<View> matchingElements = new ObservableListView<View>();
+ ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, matchingElements, diagram);
+
+ FakeObservableListListener<View> notifyingListListener = new FakeObservableListListener<View>();
+ matchingElements.getEventBus().register(notifyingListListener);
+
+ // Action
+ notifyingListListener.traces.clear();
+ removeElements(diagram, removedElementCount);
+ addShapeElements(diagram, addedElementCount);
+ expressionMatcher.refreshMatchingElements();
+
+ // Assert
+ assertSame("elements added", viewsCount+addedElementCount-removedElementCount, diagram.getChildren().size());
+
+ assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+
+ ObservableListView<View>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+
+ assertEquals("expected removed count", removedElementCount, event.getRemovedElements().size());
+ assertEquals("expected added count", addedElementCount, event.getAddedElements().size());
+ }
+
+
+ /**
+ * Remove n Views from the provided diagram
+ * @param diagram
+ * @param removedElementCount
+ */
+ private void removeElements(Diagram diagram, int removedElementCount) {
+
+ List<View> views = diagram.getChildren();
+
+ int index = views.size()-1;
+ for( int i=0; i<removedElementCount&&index>=0; i++) {
+ diagram.removeChild(views.get(index));
+ index = views.size()-1;
+ }
+
+ }
+
+ /**
+ * Add n Views to the provided diagram
+ * @param diagram
+ * @param removedElementCount
+ */
+ private void addShapeElements(Diagram diagram, int elementCount) {
+
+ for( int i=0; i<elementCount; i++) {
+ diagram.createChild(NotationPackage.eINSTANCE.getShape());
+ }
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/TraceValueChangedEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/TraceValueChangedEventListener.java
new file mode 100644
index 00000000000..22992024d83
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/TraceValueChangedEventListener.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceValueChangedEventListener implements IValueChangedEventListener {
+
+ public TriggeredEventTraces<Notification> traces = new TriggeredEventTraces<Notification>();
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void valueChanged(Notification notification) {
+ traces.addTrace("valueChanged", notification);
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactoryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactoryTest.java
new file mode 100644
index 00000000000..0655006d468
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactoryTest.java
@@ -0,0 +1,95 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.uml2.uml.Class;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ValueChangedEventNotifierFactoryTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+ */
+ @Test
+ public void testValueChangedEventNotifierFactory() {
+
+ ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ // Action
+ ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier)notifierFactory.adapt(c1, ValueChangedEventNotifier.class);
+
+ // Assert
+ assertNotNull("object created", eventNotifier);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+ */
+ @Test
+ public void testReturnSameInstanceImpl() {
+
+ ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+ Class c2 = modelsFactory.newClass(diagram1, "C2");
+
+ // Action
+ ValueChangedEventNotifier eventNotifier11 = (ValueChangedEventNotifier)notifierFactory.adapt(c1, ValueChangedEventNotifier.class);
+ ValueChangedEventNotifier eventNotifier12 = (ValueChangedEventNotifier)notifierFactory.adapt(c1, ValueChangedEventNotifier.class);
+
+ ValueChangedEventNotifier eventNotifier21 = (ValueChangedEventNotifier)notifierFactory.adapt(c2, ValueChangedEventNotifier.class);
+ ValueChangedEventNotifier eventNotifier22 = (ValueChangedEventNotifier)notifierFactory.adapt(c2, ValueChangedEventNotifier.class);
+
+ // Assert
+ assertNotNull("object created", eventNotifier11);
+ assertNotNull("object created", eventNotifier21);
+
+ assertNotEquals("instance are different between diagram", eventNotifier11, eventNotifier21);
+
+ assertEquals("return the same instance", eventNotifier11, eventNotifier12);
+ assertEquals("return the same instance", eventNotifier21, eventNotifier22);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierTest.java
new file mode 100644
index 00000000000..c67a61e8d72
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierTest.java
@@ -0,0 +1,222 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces.TriggeredEvent;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ValueChangedEventNotifierTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#ValueChangedEventNotifier()}.
+ */
+ @Test
+ public void testValueChangedEventNotifier() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+ ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier)notifierFactory.adapt(c1, ValueChangedEventNotifier.class);
+
+ // Assert
+ assertNotNull("notifier created", eventNotifier);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#addEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+ */
+ @Test
+ public void testAddEventListener() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+ ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier)notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+ TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+ eventNotifier.addEventListener(listener);
+
+ // Assert
+ assertTrue("listener added", eventNotifier.listeners.contains(listener));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#removeEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+ */
+ @Test
+ public void testRemoveEventListener() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+ ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier)notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+ TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ eventNotifier.removeEventListener(listener);
+
+ // Assert
+ assertFalse("listener removed", eventNotifier.listeners.contains(listener));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#fireDiagramViewAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testClassNameChangedEvent() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+ ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier)notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+ TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ int expectedEventCount = 1;
+
+ // Action
+ traces.clear();
+ // Modify ele
+ c1.setName("newName");
+
+ // Assert
+ // Assert
+ assertTrue("event recorded", traces.contains("valueChanged"));
+ assertEquals("right number of events", expectedEventCount, traces.traces.size() );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testPropertyAdded() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+ ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier)notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+ TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ int expectedEventCount = 1;
+
+ // Action
+ traces.clear();
+ // Modify ele
+ Property p1 = modelsFactory.newProperty(c1, "p1");
+
+ // Assert
+ // Assert
+ assertTrue("event recorded", traces.contains("valueChanged"));
+ assertEquals("one event recorded", expectedEventCount, traces.traces.size() );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testPropertyNameChanged() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+ Property p1 = modelsFactory.newProperty(c1, "p1");
+
+ ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+ ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier)notifierFactory.adapt(diagram1);
+
+ TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ int expectedEventCount = 1;
+
+ // Action
+ traces.clear();
+ // Modify ele
+ p1.setName("NewName");
+
+ // Assert
+ assertTrue("event recorded", traces.contains("valueChanged"));
+ assertEquals("one event recorded", expectedEventCount, traces.traces.size() );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testClassAdded() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+ ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier)notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+ TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ int expectedEventCount = 1; // Name is set before attachment ==> no corresponding event.
+
+ // Action
+ traces.clear();
+ Class c2 = modelsFactory.newClass(diagram1, "C2");
+
+ // Assert
+ assertTrue("event recorded", traces.contains("valueChanged"));
+ assertEquals("one event recorded", expectedEventCount, traces.traces.size() );
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/integration/LayersStateAfterReloadTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/integration/LayersStateAfterReloadTest.java
new file mode 100644
index 00000000000..74dc2ab3922
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/integration/LayersStateAfterReloadTest.java
@@ -0,0 +1,388 @@
+/*****************************************************************************
+ * Copyright (c) 2014 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.integration;
+
+import static org.junit.Assert.*;
+
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.LayersFactoryTestUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * Tests checking the states of the layers after a reload of the model.
+ * The state should normally be "ATTACHED".
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStateAfterReloadTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#LayersFactoryForStackImpl()}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayersFactoryForStackImpl() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+ assertNotNull("factory created", factory);
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ Layer layer1 = factory.createLayer(rootLayer, owningStack, application);
+ Layer layer2 = factory.createLayer(rootLayer, owningStack, application);
+ TopLayerOperator layerOperator1 = factory.createTopLayerOperator(rootLayer, owningStack, application);
+ Layer layer3 = factory.createLayer(layerOperator1, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", rootLayer);
+ assertNotNull("Layer created", layer1);
+ assertNotNull("Layer created", layer2);
+ assertNotNull("Layer created", layerOperator1);
+ assertNotNull("Layer created", layer3);
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#findNewLayerName(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer)}.
+ */
+ @Test
+ public void testFindNewLayerName() {
+
+ LayersFactoryForStackImpl factory = new LayersFactoryForStackImpl();
+ String expectedName1 = factory.LAYER_NAME_PREFIX + "0";
+
+
+ LayerOperator parent = LayersFactory.eINSTANCE.createTopLayerOperator();
+ String name1 = factory.findNewLayerName(parent);
+
+ assertEquals( "expected name", expectedName1, name1);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayersStack()}.
+ */
+ @Test
+ @Ignore
+ public void testCreateLayersStack() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#initLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testInitLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create a Tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+
+ // Create a layer and initialize it
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ factory.initLayer(layer1, rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ Layer layer1 = factory.createLayer(rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayerAsRoot() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ Layer layer1 = factory.createLayer(owningStack, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", owningStack, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createRegExpLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateRegExpLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ RegExpLayer layer1 = factory.createRegExpLayer(rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateRegExpLayerAsRoot() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ RegExpLayer layer1 = factory.createRegExpLayer(owningStack, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", owningStack, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateTopLayerOperator() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ TopLayerOperator layer1 = factory.createTopLayerOperator(rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateTopLayerOperatorAsRoot() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator layer1 = factory.createTopLayerOperator(owningStack, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", owningStack, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createStackedLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateStackedLayerOperator() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ StackedLayerOperator layer1 = factory.createStackedLayerOperator(rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateStackedLayerOperatorAsRoot() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ StackedLayerOperator layer1 = factory.createStackedLayerOperator(owningStack, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", owningStack, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link LayersFactoryForStackImpl#createLayerOperator(String, LayersContainer, LayersStack, LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayerOperator() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ List<LayerOperatorDescriptor> operatorDescs = application.getLayerOperatorDescriptorRegistry().getDescriptors();
+ assertNotNull("descs found", operatorDescs);
+ assertTrue("a least one desc is defined", operatorDescs.size()>0);
+
+ String layerID = operatorDescs.get(0).getName();
+ AbstractLayerOperator layer1 = factory.createLayerOperator(layerID, rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImplWithApplicationTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImplWithApplicationTest.java
new file mode 100644
index 00000000000..8648bf71fc5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImplWithApplicationTest.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Test methods declared in {@link AbstractLayer}.
+ * Use a {@link Layer} for test.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AbstractLayerImplWithApplicationTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValueMap()}.
+ */
+ @Test
+ public void testAbstractLayer() {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Add instances to the layer
+ int index = 1;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+
+ // check if we can retrieve the instance
+ assertNotNull("PropertyValueMap exis", layer);
+
+ }
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getAttachedProperties()}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetAttachedProperties() throws LayersException {
+ // Create objects to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Add instances to the layer
+ int index = 1;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+
+ layer.addPropertyInstance(property1);
+ layer.addPropertyInstance(property2);
+
+ // check if we can get the list
+ assertEquals("size is same as available properties", 2, layer.getAttachedProperties().size());
+
+ // Check property order
+ assertTrue("property is found", layer.getAttachedProperties().contains(property1) );
+ assertTrue("property is found", layer.getAttachedProperties().contains(property2) );
+
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImplTest.java
new file mode 100644
index 00000000000..42d09c6f43e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImplTest.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class AbstractLayerOperatorImplTest {
+
+ /**
+ * Object to test.
+ * As the {@link AbstractLayerOperator} is abstract, the implementation
+ * is one of the concrete subtype.
+ *
+ */
+ protected AbstractLayerOperator abstractLayerOperator;
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ abstractLayerOperator = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#AbstractLayerOperatorImpl()}.
+ */
+ @Test
+ public void testAbstractLayerOperatorImpl() {
+ assertNotNull("layerOperaator created", abstractLayerOperator);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#isDescriptorSet()}.
+ */
+ @Test
+ public void testIsDescriptorSet() {
+
+ // Create objects requested for test
+ LayerOperatorDescriptor layerDesc = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+
+ // Check
+ assertFalse( "descriptor is not set after creation", abstractLayerOperator.isDescriptorSet());
+
+ // Set name and application.
+ // This should call reset, and set the descriptor
+ abstractLayerOperator.setLayerOperatorDescriptor(layerDesc);
+
+ // check if the descriptor is set
+ assertTrue("descriptor is set", abstractLayerOperator.isDescriptorSet());
+ assertSame("right descriptor is set", layerDesc, abstractLayerOperator.getLayerOperatorDescriptor());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#resetDescriptor()}.
+ */
+ @Test
+ @Ignore
+ public void testResetDescriptor() {
+ fail("Not yet implemented");
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImplTest.java
new file mode 100644
index 00000000000..f3b35fb241b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImplTest.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanTypeImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl#createInstance()}.
+ */
+ @Test
+ public void testCreateInstance() {
+ BooleanType type = LayersFactory.eINSTANCE.createBooleanType();
+
+ TypeInstance instance = type.createInstance();
+ assertNotNull("instance created", instance);
+ assertTrue("Right instance", instance instanceof BooleanInstance);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl#createInstance()}.
+ */
+ @Test
+ public void testSetValueFromString() {
+ BooleanType type = LayersFactory.eINSTANCE.createBooleanType();
+
+ final String DEFAULT_VALUE = "true";
+ TypeInstance instance = type.createInstance();
+
+ instance.setValueFromString(DEFAULT_VALUE);
+ assertNotNull("instance created", instance);
+ assertTrue("Right instance", instance instanceof BooleanInstance);
+ assertEquals("right value", true, ((BooleanInstance)instance).isValue());
+
+ // Check false value
+ instance.setValueFromString("false");
+ assertNotNull("instance created", instance);
+ assertTrue("Right instance", instance instanceof BooleanInstance);
+ assertEquals("right value", false, ((BooleanInstance)instance).isValue());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl#BooleanTypeImpl()}.
+ */
+ @Test
+ public void testBooleanTypeImpl() {
+ BooleanType type = LayersFactory.eINSTANCE.createBooleanType();
+ assertNotNull("object created", type);
+
+ assertEquals("name initialized", "boolean", type.getName());
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImplTest.java
new file mode 100644
index 00000000000..8b3debeded5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImplTest.java
@@ -0,0 +1,149 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+import org.eclipse.papyrus.layers.stackmodel.operators.FakePropertyOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class CustomPropertyOperatorImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetComputePropertyValueCommand() throws LayersException {
+ CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+ FakePropertyOperator opInstance = new FakePropertyOperator();
+ operator.setOperatorInstance(opInstance);
+
+ // Check
+ operator.getComputePropertyValueCommand(null);
+ // Check if the corresponding method of the custom operator is called.
+ assertTrue("custom op getCmd method is called", opInstance.isComputePropertyValueCommandCalled);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#CustomPropertyOperatorImpl()}.
+ */
+ @Test
+ public void testCustomPropertyOperatorImpl() {
+ CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+ assertNotNull("object created", operator);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#setClassname(java.lang.String)}.
+ */
+ @Test
+ public void testSetClassname() {
+ CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+ // Set a classname
+ String classname = BooleanAndOperator.class.getName();
+ operator.setClassname(classname);
+
+ // check
+ assertSame( "classname found", classname, operator.getClassname());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getOperatorInstance()}.
+ */
+ @Test
+ public void testGetOperatorInstance() {
+ CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+ CustomPropertyOperatorsInstance opInstance = new BooleanAndOperator();
+ operator.setOperatorInstance(opInstance);
+
+ // Check
+ assertSame("custom op found", opInstance, operator.getOperatorInstance());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getOperatorInstance()}.
+ */
+ @Test
+ public void testGetOperatorInstanceFromClassname() {
+ CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+ // Set a classname
+ operator.setClassname(BooleanAndOperator.class.getName());
+
+ // Check
+ assertNotNull("custom op created and found", operator.getOperatorInstance());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#setOperatorInstance(org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance)}.
+ */
+ @Test
+ public void testSetOperatorInstance() {
+ CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+ CustomPropertyOperatorsInstance opInstance = new BooleanAndOperator();
+ operator.setOperatorInstance(opInstance);
+
+ // Check
+ assertSame("custom op found", opInstance, operator.getOperatorInstance());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#setClassBundleID(java.lang.String)}.
+ */
+ @Test
+ @Ignore
+ public void testSetClassBundleID() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#resetOperatorInstance()}.
+ */
+ @Test
+ @Ignore
+ public void testResetOperatorInstance() {
+ fail("Not yet implemented");
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FakeOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FakeOperator.java
new file mode 100644
index 00000000000..2da33324f49
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FakeOperator.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+
+
+/**
+ * A fake operator implementation used for tests purposes.
+ * @author cedric dumoulin
+ *
+ */
+public class FakeOperator implements CustomPropertyOperatorsInstance {
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+ *
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> nestedCommand) throws LayersException {
+ return new FakeCommand(nestedCommand);
+ }
+
+
+ /**
+ * Class implementing an And command.
+ *
+ */
+ public class FakeCommand implements ComputePropertyValueCommand {
+
+ public EList<ComputePropertyValueCommand> nestedCommand;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param nestedCommand
+ */
+ public FakeCommand(EList<ComputePropertyValueCommand> nestedCommand) {
+ this.nestedCommand = nestedCommand;
+ }
+
+ /**
+ * Compute the value.
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+ *
+ * @return
+ * @throws LayersException
+ */
+ public TypeInstance getCmdValue() throws LayersException {
+
+ return null;
+ }
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImplTest.java
new file mode 100644
index 00000000000..524759288c7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImplTest.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * @author dumoulin
+ *
+ */
+public class FontInstanceImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#setValueFromString(java.lang.String)}.
+ */
+ @Test
+ public void testSetValueFromString() {
+ FontInstance instance = LayersFactory.eINSTANCE.createFontInstance();
+
+ instance.setValueFromString("MySegoe UI, 111, 123, false"); // "FontName, FontHeight, FontColor, Bold"
+// instance.setValueFromString("Segoe UI, 9, 0, false"); // "FontName, FontHeight, FontColor, Bold"
+
+ // Check values
+ assertEquals("name", "MySegoe UI", instance.getFontName());
+ assertEquals("heigt", 111, instance.getFontHeigh());
+ assertEquals("color", 123, instance.getFontColor());
+ assertEquals("bold", false, instance.isBold());
+
+ instance.setValueFromString("MySegoe UI, 111, 123, true"); // "FontName, FontHeight, FontColor, Bold"
+ assertEquals("bold", true, instance.isBold());
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)}.
+ */
+ @Test
+ @Ignore
+ public void testSetValueFromInstance() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#FontInstanceImpl()}.
+ */
+ @Test
+ public void testFontInstanceImpl() {
+ FontInstance instance = LayersFactory.eINSTANCE.createFontInstance();
+
+ assertNotNull("object created", instance);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImplTest.java
new file mode 100644
index 00000000000..ebe625f7453
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImplTest.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class IntTypeImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl#createInstance()}.
+ */
+ @Test
+ public void testCreateInstance() {
+ IntType type = LayersFactory.eINSTANCE.createIntType();
+
+ TypeInstance instance = type.createInstance();
+ assertNotNull("instance created", instance);
+ assertTrue("Right instance", instance instanceof IntInstance);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl#IntTypeImpl()}.
+ */
+ @Test
+ public void testIntTypeImpl() {
+ IntType type = LayersFactory.eINSTANCE.createIntType();
+
+ assertNotNull("object created", type);
+
+ assertEquals("name initialized", "int", type.getName());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl#createInstance()}.
+ */
+ @Test
+ public void testSetValueFromString() {
+ IntType type = LayersFactory.eINSTANCE.createIntType();
+
+ final String DEFAULT_VALUE = "-1";
+ TypeInstance instance = type.createInstance();
+
+ instance.setValueFromString(DEFAULT_VALUE);
+ assertNotNull("instance created", instance);
+ assertTrue("Right instance", instance instanceof IntInstance);
+ assertEquals("right value", -1, ((IntInstance)instance).getValue());
+
+ // Check false value
+ instance.setValueFromString("123");
+ assertNotNull("instance created", instance);
+ assertTrue("Right instance", instance instanceof IntInstance);
+ assertEquals("right value", 123, ((IntInstance)instance).getValue());
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java
new file mode 100644
index 00000000000..c47ba71b764
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java
@@ -0,0 +1,220 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.fail;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.LayersFactoryTestUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Test initilaization of Layers when inserted in a tree of layers.
+ * Use the LayerStack as container.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerExpressionInitWithApplicationImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#LayerExpressionImpl()}.
+ */
+ @Test
+ public void testLayerExpressionImpl() {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create layers
+ LayersFactoryTestUtils factory = new LayersFactoryTestUtils(application);
+ factory.newTopLayer("top",
+ factory.newLayer("layer1"),
+ factory.newLayer("layer2"),
+ factory.newTopLayer("container1",
+ factory.newLayer("layer3") )
+ );
+
+ TopLayerOperator top = (TopLayerOperator)factory.getLayer("top");
+ stack.setLayers(top);
+ TopLayerOperator container1 = (TopLayerOperator)factory.getLayer("top");
+ Layer layer1 = (Layer)factory.getLayer("layer1");
+ Layer layer2 = (Layer)factory.getLayer("layer2");
+ Layer layer3 = (Layer)factory.getLayer("layer3");
+
+
+ // Assert
+ assertNotNull("object created", top);
+ assertEquals("application initialized", application, top.getApplication() );
+
+ assertNotNull("object created", container1);
+ assertEquals("application initialized", application, container1.getApplication() );
+
+ assertNotNull("object created", layer1);
+ assertEquals("application initialized", application, layer1.getApplication() );
+
+ assertNotNull("object created", layer2);
+ assertEquals("application initialized", application, layer2.getApplication() );
+
+ assertNotNull("object created", layer3);
+ assertEquals("application initialized", application, layer3.getApplication() );
+ }
+
+ /**
+ * Test if properties are set after adding a subtree
+ */
+ @Test
+ public void testAddSubTreeImpl() {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create layers
+ LayersFactoryTestUtils factory = new LayersFactoryTestUtils(application);
+ factory.newTopLayer("top",
+ factory.newLayer("layer1"),
+ factory.newLayer("layer2"),
+ factory.newTopLayer("container1",
+ factory.newLayer("layer3") )
+ );
+
+ factory.newTopLayer("container2",
+ factory.newLayer("layer21"),
+ factory.newLayer("layer22")
+ );
+
+ TopLayerOperator top = (TopLayerOperator)factory.getLayer("top");
+ stack.setLayers(top);
+ TopLayerOperator container2 = (TopLayerOperator)factory.getLayer("container2");
+ Layer layer21 = (Layer)factory.getLayer("layer21");
+ Layer layer22 = (Layer)factory.getLayer("layer22");
+
+ // action
+ // Add subtree
+ top.getLayers().add(container2);
+
+ // Assert
+ assertNotNull("object created", top);
+ assertEquals("application initialized", application, top.getApplication() );
+
+ assertNotNull("object created", container2);
+ assertEquals("application initialized", application, container2.getApplication() );
+ assertEquals("container (stack) initialized", stack, container2.getOwningLayersStack() );
+
+ assertNotNull("object created", layer21);
+ assertEquals("application initialized", application, layer21.getApplication() );
+ assertEquals("container (stack) initialized", stack, layer21.getOwningLayersStack() );
+
+ assertNotNull("object created", layer22);
+ assertEquals("application initialized", application, layer22.getApplication() );
+ assertEquals("container (stack) initialized", stack, layer22.getOwningLayersStack() );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isLayerEnabled()}.
+ */
+ @Test
+ @Ignore
+ public void testIsLayerEnabled() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isBranchEnabled()}.
+ */
+ @Test
+ @Ignore
+ public void testIsBranchEnabled() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getOwningLayersStack()}.
+ */
+ @Test
+ public void testGetOwningLayersStack() {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create layers
+ LayersFactoryTestUtils factory = new LayersFactoryTestUtils(application);
+ factory.newTopLayer("top",
+ factory.newLayer("layer1"),
+ factory.newLayer("layer2"),
+ factory.newTopLayer("container1",
+ factory.newLayer("layer3") )
+ );
+
+ TopLayerOperator top = (TopLayerOperator)factory.getLayer("top");
+ stack.setLayers(top);
+ TopLayerOperator container1 = (TopLayerOperator)factory.getLayer("top");
+ Layer layer1 = (Layer)factory.getLayer("layer1");
+ Layer layer2 = (Layer)factory.getLayer("layer2");
+ Layer layer3 = (Layer)factory.getLayer("layer3");
+
+
+ // Assert
+ assertNotNull("object created", top);
+ assertEquals("container (stack) initialized", stack, top.getOwningLayersStack() );
+
+ assertNotNull("object created", container1);
+ assertEquals("container (stack) initialized", stack, container1.getOwningLayersStack() );
+
+ assertNotNull("object created", layer1);
+ assertEquals("container (stack) initialized", stack, layer1.getOwningLayersStack() );
+
+ assertNotNull("object created", layer2);
+ assertEquals("container (stack) initialized", stack, layer2.getOwningLayersStack() );
+
+ assertNotNull("object created", layer3);
+ assertEquals("container (stack) initialized", stack, layer3.getOwningLayersStack() );
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplGetComputeCommandTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplGetComputeCommandTest.java
new file mode 100644
index 00000000000..27e7dd58526
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplGetComputeCommandTest.java
@@ -0,0 +1,242 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Test the {@link AbstractLayer#getComputePropertyValueCommand(...)} commands
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerImplGetComputeCommandTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#LayerImpl()}.
+ */
+ @Test
+ public void testLayerImpl() {
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ assertNotNull("object created", layer);
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetComputePropertyValueCommand() throws LayersException {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Fill the map with an instance for the 2 first properties
+ int index = 0;
+ Property property = propertyRegistry.getProperties().get(index);
+ TypeInstance instance = property.createInstance();
+ layer.getPropertyValueMap().put(property.getName(), instance);
+
+ Property property2 = propertyRegistry.getProperties().get(++index);
+ TypeInstance instance2 = property2.createInstance();
+ layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+ Property property3 = propertyRegistry.getProperties().get(++index);
+
+ // Add views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ layer.getViews().add(view1);
+ View view2 = NotationFactory.eINSTANCE.createShape();
+
+ // Check
+ ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view1, property);
+ assertNotNull("cmd created", cmd);
+ assertSame("cmd s the property instance", instance, cmd);
+
+ // Check wrong view2
+ ComputePropertyValueCommand cmd2 = layer.getComputePropertyValueCommand(view2, property);
+ assertNull("cmd created", cmd2);
+
+ // Check wrong property
+ ComputePropertyValueCommand cmd3 = layer.getComputePropertyValueCommand(view2, property3);
+ assertNull("cmd created", cmd3);
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetViewsComputePropertyValueCommandListOfViewProperty() throws LayersException {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Fill the map with an instance for the 2 first properties
+ int index = 0;
+ Property property = propertyRegistry.getProperties().get(index);
+ TypeInstance instance = property.createInstance();
+ layer.getPropertyValueMap().put(property.getName(), instance);
+
+ Property property2 = propertyRegistry.getProperties().get(++index);
+ TypeInstance instance2 = property2.createInstance();
+ layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+ Property property3 = propertyRegistry.getProperties().get(++index);
+
+ // Add views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ layer.getViews().add(view1);
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+ layer.getViews().add(view3);
+
+ // Check view
+ List<ComputePropertyValueCommand> cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view3), property);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ int i=0;
+ assertSame("cmd is the property instance", instance, cmds.get(i++));
+ assertSame("cmd is the property instance", instance, cmds.get(i++));
+
+ // Check wrong view2
+ List<ComputePropertyValueCommand> cmds2 = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property);
+ assertNotNull("cmd created", cmds2);
+ assertSame("cmd size is equals to views size", 2, cmds2.size());
+ i=0;
+ assertSame("cmd is the property instance", instance, cmds2.get(i++));
+ assertSame("cmd is the property instance", null, cmds2.get(i++));
+
+ // Check wrong view2
+ List<ComputePropertyValueCommand> cmds21 = layer.getViewsComputePropertyValueCommand(Arrays.asList(view2), property);
+ assertNull("cmd created", cmds21);
+
+ // Check wrong property
+ List<ComputePropertyValueCommand> cmds3 = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1), property3);
+ assertNull("cmd created", cmds3);
+
+ // Check list with null
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, null, view3), property);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 3, cmds.size());
+ i=0;
+ assertSame("cmd is the property instance", instance, cmds.get(i++));
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertSame("cmd is the property instance", instance, cmds.get(i++));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetPropertiesComputePropertyValueCommandViewListOfProperty() throws LayersException {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Fill the map with an instance for the 2 first properties
+ int index = 0;
+ Property property = propertyRegistry.getProperties().get(index);
+ TypeInstance instance = property.createInstance();
+ layer.getPropertyValueMap().put(property.getName(), instance);
+
+ Property property2 = propertyRegistry.getProperties().get(++index);
+ TypeInstance instance2 = property2.createInstance();
+ layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+ Property property3 = propertyRegistry.getProperties().get(++index);
+
+ // Add views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ layer.getViews().add(view1);
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+ layer.getViews().add(view3);
+
+ // Check view
+ List<ComputePropertyValueCommand> cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property, property2));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ int i=0;
+ assertSame("cmd is the property instance", instance, cmds.get(i++));
+ assertSame("cmd is the property instance", instance2, cmds.get(i++));
+
+ // Check wrong property3
+ cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property, property3));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ i=0;
+ assertSame("cmd is the property instance", instance, cmds.get(i++));
+ assertSame("cmd is the property instance", null, cmds.get(i++));
+
+ // Check wrong view2
+ cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property3));
+ assertNull("cmd created", cmds);
+
+ // Check wrong view
+ cmds = layer.getPropertiesComputePropertyValueCommand(view2, Arrays.asList(property, property2));
+ assertNull("cmd created", cmds);
+
+ // Check list with null
+ cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property, null, property2));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 3, cmds.size());
+ i=0;
+ assertSame("cmd is the property instance", instance, cmds.get(i++));
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertSame("cmd is the property instance", instance2, cmds.get(i++));
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplTest.java
new file mode 100644
index 00000000000..1c68cfc3ed7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplTest.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#LayerImpl()}.
+ */
+ @Test
+ public void testLayerImpl() {
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ assertNotNull("object created", layer);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValues()}.
+ */
+ @Test
+ public void testGetPropertyValues() {
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+ assertNotNull("list created", layer.getPropertyValues());
+ }
+
+ /**
+ * Check if the {@link AbstractLayerImpl#propertyValues} list allows double.
+ */
+ @Test
+ public void testPropertyValuesAllowsDouble() {
+ // Create object to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+
+ // check creation
+ TypeInstance instance = NullInstance.NULLINSTANCE;
+
+ layer.getPropertyValues().add(instance);
+ assertEquals("instance added", 1, layer.getPropertyValues().size());
+
+ layer.getPropertyValues().add(instance);
+ assertEquals("same instance added==> double allowed", 2, layer.getPropertyValues().size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValueMap()}.
+ */
+ @Test
+ public void testGetPropertyValueMap() {
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+ assertNotNull("PropertyValueMap exist", layer.getPropertyValueMap());
+
+ // Create a type instance and add it to layer
+ TypeInstance typeInstance = LayersFactory.eINSTANCE.createStringInstance();
+ String key = "name";
+ layer.getPropertyValueMap().put(key, typeInstance);
+
+ // check if we can retrieve the instance
+ assertNotNull("PropertyValueMap exis", layer.getPropertyValueMap().get(key));
+
+ }
+
+ /**
+ * Test method .
+ * @throws BadStateException
+ */
+ @Test
+ public void testResetAllPropertyValuesFromRegistry() throws BadStateException {
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+
+ // call method.
+ // Nothing should happen
+ layer.resetAllPropertyValuesFromRegistry();
+
+ // check
+ assertEquals("list is empty", 0, layer.getPropertyValues().size());
+ }
+
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getViews()}.
+ */
+ @Test
+ public void testGetViews() {
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+ assertNotNull("list created", layer.getViews());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testAddPropertyInstance() throws LayersException {
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+ String propertyName = "isSunday";
+ Property property = PropertyUtils.getInstance().createProperty( propertyName, LayersPackage.eINSTANCE.getBooleanType());
+ layer.addPropertyInstance(property);
+
+ assertNotNull("list created", layer.getPropertyValueMap().get(propertyName));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testgetPropertyInstanceByProperty() throws LayersException {
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+ String propertyName = "isSunday";
+ Property property = PropertyUtils.getInstance().createProperty( propertyName, LayersPackage.eINSTANCE.getBooleanType());
+ layer.addPropertyInstance(property);
+
+ assertNotNull("property found by property", layer.getPropertyInstance(property));
+
+ assertNotNull("property found by name", layer.getPropertyInstance(propertyName));
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplWithApplicationTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplWithApplicationTest.java
new file mode 100644
index 00000000000..998befeaf31
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplWithApplicationTest.java
@@ -0,0 +1,255 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Tests applied to an instance initialied with an Application.
+ * @author cedric dumoulin
+ *
+ */
+public class LayerImplWithApplicationTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#resetAllPropertyValuesFromRegistry()}.
+ */
+ @Test
+ public void testLayer() {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+
+ // check creation
+ assertNotNull("application available", layer.getApplication());
+ assertNotNull("property registry available", layer.getApplication().getPropertyRegistry());
+ }
+
+ /**
+ * Check if the {@link AbstractLayerImpl#propertyValues} list allows double.
+ */
+ @Test
+ public void testPropertyValuesAlowsDouble() {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+
+ // check creation
+ TypeInstance instance = NullInstance.NULLINSTANCE;
+
+ layer.getPropertyValues().add(instance);
+ assertEquals("instance added", 1, layer.getPropertyValues().size());
+
+ layer.getPropertyValues().add(instance);
+ assertEquals("same instance added==> double allowed", 2, layer.getPropertyValues().size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#resetAllPropertyValuesFromRegistry()}.
+ * @throws BadStateException
+ */
+ @Test
+ public void testResetAllPropertyValuesFromRegistry() throws BadStateException {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Fill the map with an instance for the 2 first properties
+ int index = 0;
+ Property property = propertyRegistry.getProperties().get(index);
+ TypeInstance instance = property.createInstance();
+ layer.getPropertyValueMap().put(property.getName(), instance);
+
+ Property property2 = propertyRegistry.getProperties().get(++index);
+ TypeInstance instance2 = property2.createInstance();
+ layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+ // call the method
+ layer.resetAllPropertyValuesFromRegistry();
+ // check if the propertyValues is correct
+ assertEquals("size is same as available properties", propertyRegistry.getProperties().size(), layer.getPropertyValues().size());
+
+ // Check property order
+ assertSame("instance is at right index", instance, layer.getPropertyValues().get(0) );
+ assertSame("instance is at right index", instance2, layer.getPropertyValues().get(1) );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#resetAllPropertyValuesFromRegistry()}.
+ * @throws BadStateException
+ */
+ @Test
+ public void testAutomaticSynchronizationAfterAdd() throws BadStateException {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Fill the map with an instance for the 2 first properties
+ int index = 0;
+ Property property = propertyRegistry.getProperties().get(index);
+ TypeInstance instance = property.createInstance();
+ layer.getPropertyValueMap().put(property.getName(), instance);
+
+ Property property2 = propertyRegistry.getProperties().get(++index);
+ TypeInstance instance2 = property2.createInstance();
+ layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+ // check if the propertyValues is correct
+ assertEquals("size is same as available properties", propertyRegistry.getProperties().size(), layer.getPropertyValues().size());
+
+ // Check property order
+ assertSame("instance is at right index", instance, layer.getPropertyValues().get(0) );
+ assertSame("instance is at right index", instance2, layer.getPropertyValues().get(1) );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#resetAllPropertyValuesFromRegistry()}.
+ * @throws BadStateException
+ */
+ @Test
+ public void testAutomaticSynchronizationAfterRemove() throws BadStateException {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ layer.startBehaviors();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Fill the map with an instance
+ int index = 1;
+ Property property = propertyRegistry.getProperties().get(index);
+ TypeInstance instance = property.createInstance();
+ layer.getPropertyValueMap().put(property.getName(), instance);
+
+ // check if the propertyValues is correct
+ assertEquals("size is same as available properties", propertyRegistry.getProperties().size(), layer.getPropertyValues().size());
+
+ // Check property order
+ assertSame("instance is at right index", instance, layer.getPropertyValues().get(index) );
+
+ // Do remove instance
+ layer.getPropertyValueMap().removeKey(property.getName());
+ assertSame("instance is removed", NullInstance.NULLINSTANCE, layer.getPropertyValues().get(index) );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#synchronizePropertyValue(java.lang.String, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)}.
+ * Test synchronization.
+ * @throws BadStateException
+ */
+ @Test
+ public void testSynchronizePropertyValue() throws BadStateException {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+
+ // Get a property from PropertyRegistry
+ int index = 1;
+ Property property = application.getPropertyRegistry().getProperties().get(index);
+ // create an instance of property
+ TypeInstance instance = property.createInstance();
+ // Add an instance to map
+ layer.getPropertyValueMap().put(property.getName(), instance);
+
+ // Check if the instance is also added to propertyValues
+ assertSame("instance set to values at right index", instance, layer.getPropertyValues().get(index));
+
+ // remove instance
+ layer.getPropertyValueMap().removeKey(property.getName());
+ assertEquals("propertyValues.size() is the same", application.getPropertyRegistry().getProperties().size(), layer.getPropertyValues().size());
+ assertSame("instance removed from propertyValues", NullInstance.NULLINSTANCE, layer.getPropertyValues().get(index));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValues()}.
+ * Test if {@link Layer#getPropertyValues() is synchronized when an instance}
+ * is added to {@link Layer#getPropertyValueMap()}.
+
+
+ */
+ @Test
+ public void testGetPropertyValues() {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+
+ // check list
+ assertNotNull("list is created", layer.getPropertyValues());
+ assertEquals("list.size()==number of available properties", application.getPropertyRegistry().getProperties().size(), layer.getPropertyValues().size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValueMap()}.
+ * @throws BadStateException
+ */
+ @Test
+ public void testGetPropertyValueMap() throws BadStateException {
+ // Create objets to test
+ LayerImpl layer = (LayerImpl)LayersFactory.eINSTANCE.createLayer();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Check map
+ assertNotNull("map is created", layer.getPropertyValueMap());
+
+ // Try to add an instance in the map
+ int index = 0;
+ Property property = propertyRegistry.getProperties().get(index);
+ TypeInstance instance = property.createInstance();
+ layer.getPropertyValueMap().put(property.getName(), instance);
+
+ // check retrieving
+ assertSame("got the instance", instance, layer.getPropertyValueMap().get(property.getName() ));
+
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImplTest.java
new file mode 100644
index 00000000000..668928f8474
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImplTest.java
@@ -0,0 +1,175 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayerOperatorDescriptorImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Create an operator
+ * @param string
+ * @return
+ */
+ protected PropertyOperator createOperator(String name) {
+ PropertyOperator propertyOperator = LayersFactory.eINSTANCE.createPropertyOperator();
+ propertyOperator.setName(name);
+
+ return propertyOperator;
+ }
+
+ /**
+ * Create a Property
+ * @param string
+ * @param i
+ * @return
+ */
+ protected Property createProperty(String name, int index) {
+
+ Property property = LayersFactory.eINSTANCE.createProperty();
+ property.setName(name);
+ property.setIndex(index);
+
+ return property;
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testGetPropertyOperator() throws NotFoundException {
+ // Create and init descriptor
+ int expectedSize = 5;
+ DefaultPropertyOperator defaultPropertyOperator = LayersFactory.eINSTANCE.createDefaultPropertyOperator();
+ LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+ descriptor.setPropertyCollectionSize(expectedSize, defaultPropertyOperator);
+
+ // Create a Properties
+ int i = 0;
+ Property property1 = createProperty( "prop" + i, i++);
+ Property property2 = createProperty( "prop" + i, i++);
+ Property property4 = createProperty( "prop4" , 4);
+
+ // Create Operators
+ i=0;
+ PropertyOperator operator1 = createOperator( "oper" + i++ );
+ PropertyOperator operator2 = createOperator( "oper" + i++ );
+ PropertyOperator operator4 = createOperator( "oper4" );
+
+ // Try to add
+ descriptor.setPropertyOperator(property1, operator1);
+ descriptor.setPropertyOperator(property2, operator2);
+ descriptor.setPropertyOperator(property4, operator4);
+
+ // Do test
+ assertSame("operators size has not changed", expectedSize, descriptor.getPropertyOperators().size());
+ assertSame("operator can be found", operator1, descriptor.getPropertyOperator(property1));
+ assertSame("operator can be found", operator2, descriptor.getPropertyOperator(property2));
+ assertSame("operator can be found", operator4, descriptor.getPropertyOperator(property4));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testSetPropertyOperator() throws NotFoundException {
+ // Create and init descriptor
+ int expectedSize = 5;
+ DefaultPropertyOperator defaultPropertyOperator = LayersFactory.eINSTANCE.createDefaultPropertyOperator();
+ LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+ descriptor.setPropertyCollectionSize(expectedSize, defaultPropertyOperator);
+
+ // Create a Properties
+ int i = 0;
+ Property property1 = createProperty( "prop" + i, i++);
+ Property property2 = createProperty( "prop" + i, i++);
+ Property property4 = createProperty( "prop4" , 4);
+
+ // Create Operators
+ i=0;
+ PropertyOperator operator1 = createOperator( "oper" + i++ );
+ PropertyOperator operator2 = createOperator( "oper" + i++ );
+ PropertyOperator operator4 = createOperator( "oper4" );
+
+ // Try to add
+ descriptor.setPropertyOperator(property1, operator1);
+ descriptor.setPropertyOperator(property2, operator2);
+ descriptor.setPropertyOperator(property4, operator4);
+
+ // Do test
+ assertSame("operators size has not changed", expectedSize, descriptor.getPropertyOperators().size());
+ assertSame("operator can be found", operator1, descriptor.getPropertyOperator(property1));
+ assertSame("operator can be found", operator2, descriptor.getPropertyOperator(property2));
+ assertSame("operator can be found", operator4, descriptor.getPropertyOperator(property4));
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()}.
+ */
+ @Test
+ @Ignore
+ public void testCreateLayerOperator() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator)}.
+ */
+ @Test
+ public void testSetPropertyCollectionSize() {
+
+
+ // Create and init descriptor
+ int expectedSize = 5;
+ DefaultPropertyOperator defaultPropertyOperator = LayersFactory.eINSTANCE.createDefaultPropertyOperator();
+ LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+ descriptor.setPropertyCollectionSize(expectedSize, defaultPropertyOperator);
+
+ // Check operators init
+ assertSame("list has the expected size", expectedSize, descriptor.getPropertyOperators().size());
+
+ assertSame("list is initialized", defaultPropertyOperator, descriptor.getPropertyOperators().get(0));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImplTest.java
new file mode 100644
index 00000000000..eda3d465a51
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImplTest.java
@@ -0,0 +1,273 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerOperatorDescriptorRegistryImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#LayerOperatorDescriptorRegistryImpl()}.
+ */
+ @Test
+ public void testLayerOperatorDescriptorRegistryImpl() {
+
+
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ assertNotNull("registry created", registry);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getDescriptors()}.
+ */
+ @Test
+ public void testGetDescriptors() {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ assertNotNull("descriptors list is set", registry.getDescriptors());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyOperators()}.
+ */
+ @Test
+ public void testGetPropertyOperators() {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ assertNotNull("operators list is set", registry.getPropertyOperators());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyCollectionSize()}.
+ */
+ @Test
+ public void testGetPropertyCollectionSize() {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ assertSame("sie is set", propertiesCollectionSize, registry.getPropertyCollectionSize());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#setPropertyCollectionSize(int)}.
+ */
+ @Test
+ public void testSetPropertyCollectionSize() {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ assertSame("size set", propertiesCollectionSize, registry.getPropertyCollectionSize());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getDefaultOperator()}.
+ */
+ @Test
+ public void testGetDefaultOperator() {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ // Check the default operator
+ assertNotNull("default operator set", registry.getDefaultOperator());
+ assertTrue("default operator type", registry.getDefaultOperator() instanceof DefaultPropertyOperator);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor)}.
+ */
+ @Test
+ public void testAddLayerOperatorDescriptor() {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ // Create a LayerOperatorDesc
+ LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createAndStackedLayerOperatorDescriptor();
+
+ // Add it
+ registry.addLayerOperatorDescriptor(descriptor);
+
+ // Check if correctly added
+ assertSame("list size increased", 1, registry.getDescriptors().size());
+ assertSame("descriptor found", descriptor, registry.getDescriptors().get(0));
+
+ assertSame("descriptor property size set", propertiesCollectionSize, descriptor.getPropertyOperators().size());
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getLayerOperatorDescriptor(java.lang.String)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testGetLayerOperatorDescriptor() throws NotFoundException {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ // Create a LayerOperatorDesc
+ LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+ descriptor.setName("desc1");
+
+ // Add it
+ registry.addLayerOperatorDescriptor(descriptor);
+
+ // Try to get by its name
+ assertSame("descriptor found by its name", descriptor, registry.getLayerOperatorDescriptor(descriptor.getName()));
+
+ // Try with a wrong name
+ try {
+ registry.getLayerOperatorDescriptor("wrong name");
+ fail("Wrong name send an NotFoundException");
+ } catch (NotFoundException e) {
+ // ok
+ }
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)}.
+ */
+ @Test
+ public void testAddPropertyOperator() {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ // Create a PropertyOperator
+ PropertyOperator operator1 = LayersFactory.eINSTANCE.createPropertyOperator();
+ operator1.setName("op1");
+
+ // Add it
+ registry.addPropertyOperator(operator1);
+
+ // Check if correctly added
+ assertSame("list size increased", 1, registry.getPropertyOperators().size());
+ assertSame("descriptor found", operator1, registry.getPropertyOperators().get(0));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyOperator(java.lang.String)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testGetPropertyOperator() throws NotFoundException {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ // Create a PropertyOperator
+ PropertyOperator operator1 = LayersFactory.eINSTANCE.createPropertyOperator();
+ operator1.setName("op1");
+
+ // Add it
+ registry.addPropertyOperator(operator1);
+
+ // Try to get by its name
+ assertSame("operator found by its name", operator1, registry.getPropertyOperator(operator1.getName()));
+
+ // Try with a wrong name
+ try {
+ registry.getPropertyOperator("wrong name");
+ fail("Wrong name send an NotFoundException");
+ } catch (NotFoundException e) {
+ // ok
+ }
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testAttachOperatorToDescriptor() throws NotFoundException {
+ // Create a registry
+ int propertiesCollectionSize = 10;
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+ // Create a LayerOperatorDesc
+ LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+ descriptor.setName("desc1");
+
+ // Add it
+ registry.addLayerOperatorDescriptor(descriptor);
+
+ // Create a PropertyOperator
+ PropertyOperator operator1 = LayersFactory.eINSTANCE.createPropertyOperator();
+ operator1.setName("op1");
+
+ // Add it
+ registry.addPropertyOperator(operator1);
+
+ // Create a property
+ Property prop1 = LayersFactory.eINSTANCE.createProperty();
+ prop1.setName("prop1");
+ prop1.setIndex(0);
+
+ // Attach Property
+ registry.attachOperatorToDescriptor(prop1, operator1.getName(), descriptor.getName());
+
+ // Check if the operator is added to LayerOperator
+ assertSame("operator found in layer", operator1, descriptor.getPropertyOperator(prop1));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImplWithApplicationTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImplWithApplicationTest.java
new file mode 100644
index 00000000000..751347c1d9f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImplWithApplicationTest.java
@@ -0,0 +1,384 @@
+/*****************************************************************************
+ * Copyright (c) 2014 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.LayersFactoryTestUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersFactoryForStackImplWithApplicationTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#LayersFactoryForStackImpl()}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayersFactoryForStackImpl() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+ assertNotNull("factory created", factory);
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ Layer layer1 = factory.createLayer(rootLayer, owningStack, application);
+ Layer layer2 = factory.createLayer(rootLayer, owningStack, application);
+ TopLayerOperator layerOperator1 = factory.createTopLayerOperator(rootLayer, owningStack, application);
+ Layer layer3 = factory.createLayer(layerOperator1, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", rootLayer);
+ assertNotNull("Layer created", layer1);
+ assertNotNull("Layer created", layer2);
+ assertNotNull("Layer created", layerOperator1);
+ assertNotNull("Layer created", layer3);
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#findNewLayerName(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer)}.
+ */
+ @Test
+ public void testFindNewLayerName() {
+
+ LayersFactoryForStackImpl factory = new LayersFactoryForStackImpl();
+ String expectedName1 = factory.LAYER_NAME_PREFIX + "0";
+
+
+ LayerOperator parent = LayersFactory.eINSTANCE.createTopLayerOperator();
+ String name1 = factory.findNewLayerName(parent);
+
+ assertEquals( "expected name", expectedName1, name1);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayersStack()}.
+ */
+ @Test
+ @Ignore
+ public void testCreateLayersStack() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#initLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testInitLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create a Tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+
+ // Create a layer and initialize it
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ factory.initLayer(layer1, rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ Layer layer1 = factory.createLayer(rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayerAsRoot() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ Layer layer1 = factory.createLayer(owningStack, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", owningStack, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createRegExpLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateRegExpLayer() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ RegExpLayer layer1 = factory.createRegExpLayer(rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateRegExpLayerAsRoot() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ RegExpLayer layer1 = factory.createRegExpLayer(owningStack, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", owningStack, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateTopLayerOperator() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ TopLayerOperator layer1 = factory.createTopLayerOperator(rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateTopLayerOperatorAsRoot() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator layer1 = factory.createTopLayerOperator(owningStack, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", owningStack, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createStackedLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateStackedLayerOperator() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ StackedLayerOperator layer1 = factory.createStackedLayerOperator(rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateStackedLayerOperatorAsRoot() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ StackedLayerOperator layer1 = factory.createStackedLayerOperator(owningStack, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", owningStack, layer1.eContainer() );
+ }
+
+ /**
+ * Test method for {@link LayersFactoryForStackImpl#createLayerOperator(String, LayersContainer, LayersStack, LayersStackApplication)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayerOperator() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ // Create stack
+ LayersStack owningStack = application.getLayersStackFor(diagram);
+
+ LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+ // Create tree
+ TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+ List<LayerOperatorDescriptor> operatorDescs = application.getLayerOperatorDescriptorRegistry().getDescriptors();
+ assertNotNull("descs found", operatorDescs);
+ assertTrue("a least one desc is defined", operatorDescs.size()>0);
+
+ String layerID = operatorDescs.get(0).getName();
+ AbstractLayerOperator layer1 = factory.createLayerOperator(layerID, rootLayer, owningStack, application);
+
+ // asserts
+ assertNotNull("Layer created", layer1);
+ assertSame("state attached", LayerState.ATTACHED, layer1.getState() );
+ assertSame("application set", application, layer1.getApplication() );
+ assertSame("owningStack set", owningStack, layer1.getOwningLayersStack() );
+ assertSame("parent set", rootLayer, layer1.eContainer() );
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImplTest.java
new file mode 100644
index 00000000000..847636132f6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImplTest.java
@@ -0,0 +1,218 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStackApplicationImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#LayersStackApplicationImpl()}.
+ */
+ @Test
+ public void testLayersStackApplicationImpl() {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ assertNotNull("instance created", application);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#init()}.
+ */
+ @Test
+ public void testInit() {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+
+ // Check other instances creation
+ assertNotNull("propertyRegistry created", application.getPropertyRegistry() );
+ assertNotNull("layerDescriptorRegistry created", application.getLayerDescriptorRegistry() );
+ assertNotNull("propertySetterRegistry created", application.getPropertySetterRegistry() );
+ assertNotNull("LayerOperatorDescriptorRegistry created", application.getLayerOperatorDescriptorRegistry() );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayersStacks()}.
+ */
+ @Test
+ public void testGetLayersStacks() {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+
+ // Check other instances creation
+ assertNotNull("stacks list created", application.getLayersStacks() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getPropertyRegistry()}.
+ */
+ @Test
+ public void testGetPropertyRegistry() {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+
+ // Check other instances creation
+ assertNotNull("propertyRegistry created", application.getPropertyRegistry() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayerDescriptorRegistry()}.
+ */
+ @Test
+ public void testGetLayerDescriptorRegistry() {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+
+ // Check other instances creation
+ assertNotNull("layerDescriptorRegistry created", application.getLayerDescriptorRegistry() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+ */
+ @Test
+ public void testRemoveLayersStackFor() {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // try to get a layer stack
+ application.getLayersStackFor(diagram);
+
+ // Create a second stack
+ Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+ LayersStack stack2 = application.getLayersStackFor(diagram2);
+
+ // Remove first stack
+ application.removeLayersStackFor(diagram);
+ // Check if not exist
+ assertFalse("stack is detached", application.isLayersStackAttachedFor(diagram));
+ assertTrue("stack is attached", application.isLayersStackAttachedFor(diagram2));
+ assertSame("get found previous stack", stack2, application.getLayersStackFor(diagram2));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+ */
+ @Test
+ public void testIsLayersStackAttachedFor() {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // check if there is a stack
+ assertFalse( "no stack is found", application.isLayersStackAttachedFor(diagram) );
+
+ // try to get a layer stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+ assertNotNull("stack is created", stack);
+
+ assertTrue("stack is attached", application.isLayersStackAttachedFor(diagram));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testLookupLayersStackFor() throws NotFoundException {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Try to lookup. Should found nothing
+ try {
+ application.lookupLayersStackFor(diagram);
+ fail("An NotFoundException should be throw");
+ } catch (NotFoundException e) {
+ }
+
+ // try to get a layer stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+ assertNotNull("stack is created", stack);
+
+ assertSame("lookup found stack", stack, application.lookupLayersStackFor(diagram));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+ */
+ @Test
+ public void testGetLayersStackFor() {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // try to get a layer stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+ assertNotNull("stack is created", stack);
+
+ // Create a second stack
+ Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+ LayersStack stack2 = application.getLayersStackFor(diagram2);
+ assertNotNull("stack is created", stack2);
+
+ // Get them again
+ assertSame("get found previuous stack", stack, application.getLayersStackFor(diagram));
+ assertSame("get found previuous stack", stack2, application.getLayersStackFor(diagram2));
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+ */
+ @Test
+ public void testCreateLayersStackFor() {
+ // Create instance
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // try to get a layer stack
+ LayersStack stack = application.createLayersStackFor(diagram);
+ assertNotNull("stack is created", stack);
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImplTest.java
new file mode 100644
index 00000000000..77ae841ecee
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImplTest.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class PropertyRegistryImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#PropertyRegistryImpl()}.
+ */
+ @Test
+ public void testPropertyRegistryImpl() {
+ // Create registry
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertNotNull("registry created", registry);
+
+ // check internal object initialization
+ assertNotNull("type registry created", registry.getTypeRegistry());
+ assertNotNull("properties created", registry.getProperties());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#PropertyRegistryImpl()}.
+ */
+ @Test
+ public void testinit() {
+ // Create registry
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertNotNull("registry created", registry);
+
+ // check init
+ assertTrue("property list size is correct", registry.getProperties().size()>0);
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#PropertyRegistryImpl()}.
+ */
+ @Test
+ public void testinitDefaultValue() {
+ // Create registry
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertNotNull("registry created", registry);
+
+ // check init
+ assertTrue("property list size is correct", registry.getProperties().size()>0);
+
+ // Check if default value is set for the first property
+ assertNotNull("property list size is correct", registry.getProperties().get(0).getDefaultValue());
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getProperties()}.
+ */
+ @Test
+ public void testGetProperties() {
+ // Create registry
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertNotNull("registry created", registry);
+
+ // check internal object initialization
+ assertNotNull("properties list created", registry.getProperties());
+ assertTrue("properties created", registry.getProperties().size()>0);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getPropertiesCount()}.
+ */
+ @Test
+ public void testGetPropertiesCount() {
+ // Create registry
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertNotNull("registry created", registry);
+
+ // check internal object initialization
+ assertSame("count is ok", registry.getProperties().size(), registry.getPropertiesCount());
+
+ // Add a property
+ Property property = LayersFactory.eINSTANCE.createProperty();
+ property.setName("prop1");
+ registry.getProperties().add(property);
+
+ assertSame("count is ok", registry.getProperties().size(), registry.getPropertiesCount());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getTypeRegistry()}.
+ */
+ @Test
+ public void testGetTypeRegistry() {
+ // Create registry
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertNotNull("registry created", registry);
+
+ // check internal object initialization
+ assertNotNull("type registry created", registry.getTypeRegistry());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getPropertyIndex(java.lang.String)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testGetPropertyIndex() throws NotFoundException {
+ // Create registry
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+ // test method
+ int index = 0;
+ Property property = registry.getProperties().get(index);
+
+ assertEquals("index found", index, registry.getPropertyIndex(property.getName() ) );
+
+ }
+
+ /**
+ * Add a new Property and test if the index is correctly set.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testAddProperty() throws NotFoundException {
+ // Create registry
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+ // Create a property
+ String typeName = "boolean";
+ String name = "prop1";
+ Property property = LayersFactory.eINSTANCE.createProperty();
+ property.setName(name);
+ property.setType(registry.getTypeRegistry().getTypes().get(typeName));
+
+ // Add property to registry
+ registry.addProperty(property);
+
+ // Get the property
+ Property propFound = registry.getProperty(name);
+ assertSame( "property found", property, propFound);
+
+ assertTrue("property index set", propFound.getIndex()>=0);
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImplTest.java
new file mode 100644
index 00000000000..1627041c42e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImplTest.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ *
+ * Test the class without application object.
+ * The map should work.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class PropertySetterRegistryImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#PropertySetterRegistryImpl()}.
+ */
+ @Test
+ public void testPropertySetterRegistryImpl() {
+ PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+ assertNotNull("registry created", registry);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getPropertySetters()}.
+ */
+ @Test
+ public void testGetPropertySetters() {
+ PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+ assertNotNull("property setters can be retrieved", registry.getPropertySetters());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getSetterMap()}.
+ */
+ @Test
+ public void testGetSetterMap() {
+ PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+ assertNotNull("map can be retrieved", registry.getSetterMap());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getApplication()}.
+ */
+ @Test
+ public void testGetApplication() {
+ PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+ assertNull("application is not set", registry.getApplication());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#setApplication(org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+ */
+ @Test
+ @Ignore
+ public void testSetApplication() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ */
+ @Test
+ @Ignore
+ public void testGetPropertySetterProperty() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getPropertySetter(java.lang.String)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testGetPropertySetterString() throws NotFoundException {
+ PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+
+
+ assertNotNull("Default property can be retrieved", registry.getPropertySetter("isValid"));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testAddPropertySetter() throws NotFoundException {
+ PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+
+ PropertySetterImpl setter = new PropertySetterImpl() {
+ public String getPropertyName() {return "myProperty";};
+ };
+
+ // add the setter
+ registry.addPropertySetter(setter);
+ // Try to get it in the map
+ assertNotNull("property can be retrieved from map", registry.getSetterMap().get("myProperty") );
+ assertNotNull("property can be retrieved from dedicated method", registry.getPropertySetter("myProperty"));
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImplWithQueriesTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImplWithQueriesTest.java
new file mode 100644
index 00000000000..aec8d26a57f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImplWithQueriesTest.java
@@ -0,0 +1,177 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+import java.io.IOException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.query.conditions.eobjects.EObjectCondition;
+import org.eclipse.emf.query.ocl.conditions.BooleanOCLCondition;
+import org.eclipse.emf.query.statements.FROM;
+import org.eclipse.emf.query.statements.IQueryResult;
+import org.eclipse.emf.query.statements.SELECT;
+import org.eclipse.emf.query.statements.WHERE;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.ocl.ParserException;
+import org.eclipse.ocl.ecore.OCL;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author dumoulin
+ *
+ */
+public class RegExpLayerImplWithQueriesTest {
+
+ /**
+ * Name of the plugin that is created.
+ */
+ final protected String PLUGIN_PROJECT_NAME = "org.eclipse.papyrus.layers.stackmodel";
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#RegExpLayerImpl()}.
+ */
+ @Test
+ public void testRegExpLayerImpl() {
+ RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+
+ assertNotNull("object created", layer);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#setExpr(java.lang.String)}.
+ */
+ @Test
+ public void testSetExpr() {
+ RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+
+ assertNotNull("object created", layer);
+
+ layer.setExpr("An expression");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#evaluateExpr()}.
+ * @throws ParserException
+ */
+ @Test
+ public void testEvaluateExpr() throws ParserException {
+ RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+
+ assertNotNull("object created", layer);
+
+ layer.setExpr("An expression");
+// List<View> res = layer.evaluateExpr();
+//
+// assertNotNull("object created", res);
+
+
+ String modelNotationKey = "notation";
+ String modelUMLKey = "uml";
+
+ String modelFileName = "/test/models/model1";
+
+ Resource resource = getResource(modelFileName, modelNotationKey);
+
+ OCL ocl = OCL.newInstance();
+ EObjectCondition condition = new BooleanOCLCondition<EClassifier, EClass, EObject>(
+ ocl.getEnvironment(),
+// "self.oclIsKindOf(Shape)",
+// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+ "self.oclAsType(Shape).visible = true",
+ NotationPackage.Literals.SHAPE
+ );
+
+ SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+ new FROM(resource.getContents()), new WHERE(condition),
+ new NullProgressMonitor());
+
+ IQueryResult results = statement.execute();
+
+ assertNotNull("got result", results);
+ assertFalse("results is not empty", results.isEmpty());
+ }
+
+
+ /**
+ * Test if the resource needed for the test exists.
+ *
+ * @throws ModelMultiException
+ */
+ @Test
+ public void testResourceExist() throws IOException, CoreException {
+
+ String modelNotationKey = "notation";
+ String modelUMLKey = "uml";
+
+ String modelFileName = "/test/models/model1";
+
+ Resource resource = getResource(modelFileName, modelNotationKey);
+
+ assertNotNull("modelFile exist", resource);
+ assertTrue("model is loaded", !resource.getContents().isEmpty());
+ }
+
+ /**
+ * @param modelFileName
+ * @param modelNotationKey
+ * @return
+ */
+ private Resource getResource(String modelFileName, String modelNotationKey) {
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+
+ URI uri = URI.createPlatformPluginURI(PLUGIN_PROJECT_NAME+ modelFileName + "." + modelNotationKey, true);
+// URI uri = URI.createPlatformPluginURI("/org.eclipse.papyrus.layers.stackmodel/model/layers.notation", true);
+
+
+ System.out.println("URI=" + uri.toString());
+ Resource resource = resourceSet.getResource(uri, true);
+ return resource;
+ }
+
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImplTest.java
new file mode 100644
index 00000000000..41e40a4a88a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImplTest.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class StackedLayerOperatorDescriptorImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl#StackedLayerOperatorDescriptorImpl()}.
+ */
+ @Test
+ public void testStackedLayerOperatorDescriptorImpl() {
+ // Create an instance of the class
+ StackedLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor();
+
+ assertNotNull("object created", descriptor);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getName()}.
+ */
+ @Test
+ public void testGetName() {
+ // Create an instance of the class
+ StackedLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor();
+
+ // Do test
+ assertSame("name correctly set", "StackedLayerOperator", descriptor.getName());
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()}.
+ */
+ @Test
+ public void testCreateLayerOperator() {
+ // Create an instance of the class
+ StackedLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor();
+
+ AbstractLayerOperator layerOperator = descriptor.createLayerOperator();
+ assertNotNull("layer created", layerOperator);
+ assertTrue("right type", layerOperator instanceof StackedLayerOperator);
+ assertSame("descriptor is set", descriptor, layerOperator.getLayerOperatorDescriptor());
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java
new file mode 100644
index 00000000000..d0fbb6eddae
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java
@@ -0,0 +1,397 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createFolder;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorsMultipleBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createOperatorBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyId;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createTypeConfig;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.FakeOperator.FakeCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class StackedLayerOperatorImplGetComputePropertyCommandTest {
+
+ private static final String FAKE_STACKED_LAYERS_OPERATOR_NAME = "FakeStackedLayersOperator";
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl#StackedLayerOperatorImpl()}.
+ * @throws LayersException
+ */
+ @Test
+ public void testStackedLayerOperatorImpl() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+ // populate the StackedLayerOperator with appropriate descriptor.
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+ RegistriesLoader loader = new RegistriesLoader(model);
+ loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+ // Know, create a LayerOperator
+ // Create a StackedLayerOperator
+ StackedLayerOperator layer = (StackedLayerOperator)layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+ layer.setApplication(application);
+
+ // Check object creation
+ assertNotNull( "object created", layer);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetComputePropertyValueCommand() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+ // populate the StackedLayerOperator with appropriate descriptor.
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+ RegistriesLoader loader = new RegistriesLoader(model);
+ loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+ // Know, create a LayerOperator
+ // Create a StackedLayerOperator
+ StackedLayerOperator layer = (StackedLayerOperator)layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+ layer.setApplication(application);
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view3), Arrays.asList(property2, property3));
+
+ // Checks
+ ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view2, property1);
+ assertNotNull("cmd created", cmd);
+ assertTrue("cmd is of Fake type", cmd instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 1, ((FakeCommand)cmd).nestedCommand.size());
+
+ cmd = layer.getComputePropertyValueCommand(view1, property1);
+ assertNotNull("cmd created", cmd);
+ assertTrue("cmd is of Fake type", cmd instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 2, ((FakeCommand)cmd).nestedCommand.size());
+
+ // Check not existing
+ cmd = layer.getComputePropertyValueCommand(view3, property1);
+ assertNull("cmd is null", cmd);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetViewsComputePropertyValueCommandListOfViewProperty() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+ // populate the StackedLayerOperator with appropriate descriptor.
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+ RegistriesLoader loader = new RegistriesLoader(model);
+ loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+ // Know, create a LayerOperator
+ // Create a StackedLayerOperator
+ StackedLayerOperator layer = (StackedLayerOperator)layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+ layer.setApplication(application);
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+ View view4 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+ Property property4 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view2, view3), Arrays.asList(property2, property3));
+
+ // Checks
+ List<ComputePropertyValueCommand> cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property1);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ int i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 2, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+ i++;
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 1, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+
+ // Check wrong property2
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view3), property3);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ i=0;
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 1, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+
+ // Check wrong view
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view4), property3);
+ assertNull("cmd created", cmds);
+
+ // Check wrong property
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property4);
+ assertNull("cmd created", cmds);
+
+ // Check list with null
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, null, view3), property1);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 3, cmds.size());
+ i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand );
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertSame("cmd is null", null, cmds.get(i++));
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetPropertiesComputePropertyValueCommandViewListOfProperty() throws LayersException {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+ // populate the StackedLayerOperator with appropriate descriptor.
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+ RegistriesLoader loader = new RegistriesLoader(model);
+ loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+ // Know, create a LayerOperator
+ // Create a StackedLayerOperator
+ StackedLayerOperator layer = (StackedLayerOperator)layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+ layer.setApplication(application);
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+ View view4 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+ Property property4 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view2,view3), Arrays.asList(property3));
+
+ // Check view
+ List<ComputePropertyValueCommand> cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, property2));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ int i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 2, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+ i++;
+ assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand );
+ assertSame("cmd has 1 sub command", 1, ((FakeCommand)cmds.get(i)).nestedCommand.size());
+
+ // Check wrong property4
+ cmds = layer.getPropertiesComputePropertyValueCommand(view2, Arrays.asList(property1, property4));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand );
+ assertSame("cmd is the property instance", null, cmds.get(i++));
+
+ // Check wrong view
+ cmds = layer.getPropertiesComputePropertyValueCommand(view4, Arrays.asList(property3));
+ assertNull("cmd created", cmds);
+
+ // Check wrong view
+ cmds = layer.getPropertiesComputePropertyValueCommand(view3, Arrays.asList(property1, property2));
+ assertNull("cmd created", cmds);
+
+ // Check list with null
+ cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, null, property2));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 3, cmds.size());
+ i=0;
+ assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand );
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand );
+
+ }
+
+ /**
+ * Create a layer with the specified view and property set
+ *
+ * @param asList
+ * @param asList2
+ * @return
+ * @throws LayersException
+ */
+ protected Layer createLayer(LayerOperator parent, List<View> views, List<Property> properties) throws LayersException {
+
+ // Create the layer
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ // Set the application (needed ?)
+ layer.setApplication(parent.getApplication());
+ // Attach it to its parent
+ parent.getLayers().add(layer);
+
+
+ // Add views
+ for( View view : views) {
+ layer.getViews().add(view);
+ }
+
+ // Add property instances
+ for(Property property : properties) {
+ layer.addPropertyInstance(property);
+ }
+ return layer;
+ }
+
+ /**
+ * Create a config model ready to initialize the {@link LayerOperatorDescriptorRegistry} with
+ * a StackedLayerOperator containing FakeLayerOperator.
+ *
+ * @param model
+ */
+ private void initLayersConfigWithTestStackedOperator(LayersConfigModel model, PropertyRegistry propertyRegistry) {
+ // Create model
+ Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
+
+ // Create LayerOperators descriptor
+ LayerOperatorConfig fakeLayerOp = createLayerOperatorConfig(layeropFolder, FAKE_STACKED_LAYERS_OPERATOR_NAME, LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+
+ // Create Operators
+ Folder operatorFolder = createFolder(model.getRootFolder(), "operatorDesc");
+ OperatorConfig operator = createPropertyOperatorConfig(operatorFolder, "FakeOperator", FakeOperator.class.getName());
+
+
+ // Create basic types
+ Folder typeFolder = createFolder(model.getRootFolder(), "types");
+ TypeConfig typeBoolean = createTypeConfig(typeFolder, "boolean");
+
+ // Create properties
+ // Use the names of the first properties in registry
+ // Specify a type, but it is not used by framework
+ Folder propertiesFolder = createFolder(model.getRootFolder(), "properties");
+ int index = 0;
+ PropertyId property1 = createPropertyId(propertiesFolder, propertyRegistry.getProperties().get(index++).getName(), typeBoolean);
+ PropertyId property2 = createPropertyId(propertiesFolder, propertyRegistry.getProperties().get(index++).getName(), typeBoolean);
+ PropertyId property3 = createPropertyId(propertiesFolder, propertyRegistry.getProperties().get(index++).getName(), typeBoolean);
+
+ // Bind operators to layers
+ Folder opBindingFolder = createFolder(model.getRootFolder(), "opBindings");
+
+ LayerOperatorMultipleBinding layerOpBindingsA = createLayerOperatorsMultipleBinding(opBindingFolder, fakeLayerOp);
+ createOperatorBinding(layerOpBindingsA, property1, operator);
+ createOperatorBinding(layerOpBindingsA, property2, operator);
+ createOperatorBinding(layerOpBindingsA, property3, operator);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplWithAplicationTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplWithAplicationTest.java
new file mode 100644
index 00000000000..e29f18a993d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplWithAplicationTest.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class StackedLayerOperatorImplWithAplicationTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl#resetDescriptor()}.
+ */
+ @Test
+ public void testResetDescriptor() {
+ // Create objects to test
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ LayerOperatorDescriptor layerDesc = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+ String layerDescName = "myLayerDesc";
+ layerDesc.setName(layerDescName );
+ application.getLayerOperatorDescriptorRegistry().addLayerOperatorDescriptor(layerDesc);
+
+ StackedLayerOperator layer = LayersFactory.eINSTANCE.createStackedLayerOperator();
+
+ // Check if the descriptor is unset
+ assertFalse("descriptor is not set", layer.isDescriptorSet());
+
+ // Set name and application.
+ // This should call reset, and set the descriptor
+ layer.setLayerOperatorDescriptorName(layerDescName);
+ layer.setApplication(application);
+
+ // check if the descriptor is set
+ assertTrue("descriptor is set", layer.isDescriptorSet());
+ assertSame("right descriptor is set", layerDesc, layer.getLayerOperatorDescriptor());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl#StackedLayerOperatorImpl()}.
+ */
+ @Test
+ public void testStackedLayerOperatorImpl() {
+ // Create objects to test
+ StackedLayerOperator layer = LayersFactory.eINSTANCE.createStackedLayerOperator();
+
+ // Check if the descriptor is unset
+ assertNotNull("layer is created", layer);
+ assertFalse("descriptor is not set", layer.isDescriptorSet());
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImplTest.java
new file mode 100644
index 00000000000..1c59d17380d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImplTest.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class StringTypeImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl#createInstance()}.
+ */
+ @Test
+ public void testCreateInstance() {
+ StringType type = LayersFactory.eINSTANCE.createStringType();
+
+ TypeInstance instance = type.createInstance();
+ assertNotNull("instance created", instance);
+ assertTrue("Right instance", instance instanceof StringInstance);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl#StringTypeImpl()}.
+ */
+ @Test
+ public void testStringTypeImpl() {
+ StringType type = LayersFactory.eINSTANCE.createStringType();
+
+ assertNotNull("object created", type);
+
+ assertEquals("name initialized", "String", type.getName());
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImplTest.java
new file mode 100644
index 00000000000..2c09f60c463
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImplTest.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class TopLayerOperatorDescriptorImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl#TopLayerOperatorDescriptorImpl()}.
+ */
+ @Test
+ public void testTopLayerOperatorDescriptorImpl() {
+ // Create an instance of the class
+ TopLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor();
+
+ assertNotNull("object created", descriptor);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getName()}.
+ */
+ @Test
+ public void testGetName() {
+ // Create an instance of the class
+ TopLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor();
+
+ // Do test
+ assertSame("name correctly set", "TopLayerOperator", descriptor.getName());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()}.
+ */
+ @Test
+ public void testCreateLayerOperator() {
+ // Create an instance of the class
+ TopLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor();
+
+ AbstractLayerOperator layerOperator = descriptor.createLayerOperator();
+ assertNotNull("layer created", layerOperator);
+ assertTrue("right type", layerOperator instanceof TopLayerOperator);
+ assertSame("descriptor is set", descriptor, layerOperator.getLayerOperatorDescriptor());
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImplGetComputeCommandTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImplGetComputeCommandTest.java
new file mode 100644
index 00000000000..d6d6fb6daa5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImplGetComputeCommandTest.java
@@ -0,0 +1,316 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Test the {#getComputePropertyValueCommand(...)} commands
+ * @author cedric dumoulin
+ *
+ */
+public class TopLayerOperatorImplGetComputeCommandTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Create a layer with the specified view and property set
+ *
+ * @param asList
+ * @param asList2
+ * @return
+ * @throws LayersException
+ */
+ protected Layer createLayer(LayerOperator parent, List<View> views, List<Property> properties) throws LayersException {
+
+ // Create the layer
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ // Set the application (needed ?)
+ layer.setApplication(parent.getApplication());
+ // Attach it to its parent
+ parent.getLayers().add(layer);
+
+
+ // Add views
+ for( View view : views) {
+ layer.getViews().add(view);
+ }
+
+ // Add property instances
+ for(Property property : properties) {
+ layer.addPropertyInstance(property);
+ }
+ return layer;
+ }
+
+ /**
+ * Test method for {@link #createLayer(List, List)}
+ * @throws LayersException
+ */
+ @Test
+ public void testCreateLayer() throws LayersException {
+
+ // Create requested objects
+ TopLayerOperator layerParent = LayersFactory.eINSTANCE.createTopLayerOperator();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layerParent.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer = createLayer( layerParent, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Checks
+ assertNotNull("layer created", layer);
+ assertSame("views added", 2, layer.getViews().size());
+
+ assertSame("property instance added", 2, layer.getPropertyValueMap().values().size());
+ assertSame("property instance is correctly set", layer.getPropertyValueMap().get(property1.getName()), layer.getPropertyInstance(property1));
+ assertSame("property instance is correctly set", layer.getPropertyValueMap().get(property2.getName()), layer.getPropertyInstance(property2));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetComputePropertyValueCommand() throws LayersException {
+ // Create requested objects
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view3), Arrays.asList(property2, property3));
+
+ // Checks
+ ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view1, property1);
+ assertNotNull("cmd created", cmd);
+ assertSame("cmd s the property instance", layer1.getPropertyInstance(property1), cmd);
+
+ cmd = layer.getComputePropertyValueCommand(view2, property1);
+ assertNotNull("cmd created", cmd);
+ assertSame("cmd s the property instance", layer2.getPropertyInstance(property1), cmd);
+
+ // Check not existing
+ cmd = layer.getComputePropertyValueCommand(view3, property1);
+ assertNull("cmd is null", cmd);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetViewsComputePropertyValueCommandListOfViewProperty() throws LayersException {
+ // Create requested objects
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+ View view4 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+ Property property4 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view3), Arrays.asList(property2, property3));
+
+ // Checks
+ List<ComputePropertyValueCommand> cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property1);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ int i=0;
+ assertSame("cmd is the property instance", layer1.getPropertyInstance(property1), cmds.get(i++));
+ assertSame("cmd is the property instance", layer2.getPropertyInstance(property1), cmds.get(i++));
+
+ // Check wrong property2
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property2);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ i=0;
+ assertSame("cmd is the property instance", null, cmds.get(i++));
+ assertSame("cmd is the property instance", layer2.getPropertyInstance(property2), cmds.get(i++));
+
+ // Check wrong view
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view4), property3);
+ assertNull("cmd created", cmds);
+
+ // Check wrong property
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property4);
+ assertNull("cmd created", cmds);
+
+ // Check list with null
+ cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, null, view3), property1);
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 3, cmds.size());
+ i=0;
+ assertSame("cmd is the property instance", layer1.getPropertyInstance(property1), cmds.get(i++));
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertSame("cmd is the property instance", null, cmds.get(i++));
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetPropertiesComputePropertyValueCommandViewListOfProperty() throws LayersException {
+ // Create requested objects
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ layer.setApplication(application);
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+ // Create Views
+ View view1 = NotationFactory.eINSTANCE.createShape();
+ View view2 = NotationFactory.eINSTANCE.createShape();
+ View view3 = NotationFactory.eINSTANCE.createShape();
+ View view4 = NotationFactory.eINSTANCE.createShape();
+
+ // Create Properties
+ int index = 0;
+ Property property1 = propertyRegistry.getProperties().get(index++);
+ Property property2 = propertyRegistry.getProperties().get(index++);
+ Property property3 = propertyRegistry.getProperties().get(index++);
+ Property property4 = propertyRegistry.getProperties().get(index++);
+
+ // Create layer1: views ={} propInstances={}
+ Layer layer1 = createLayer( layer, Arrays.asList(view1), Arrays.asList(property1));
+
+ // Create layer2: views ={} propInstances={}
+ Layer layer2 = createLayer( layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+ // Create layer3: views ={} propInstances={}
+ Layer layer3 = createLayer( layer, Arrays.asList(view3), Arrays.asList(property3));
+
+ // Check view
+ List<ComputePropertyValueCommand> cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, property2));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ int i=0;
+ assertSame("cmd is the property instance", layer1.getPropertyInstance(property1), cmds.get(i++));
+ assertSame("cmd is the property instance", layer2.getPropertyInstance(property2), cmds.get(i++));
+
+ // Check wrong property4
+ cmds = layer.getPropertiesComputePropertyValueCommand(view2, Arrays.asList(property1, property4));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 2, cmds.size());
+ i=0;
+ assertSame("cmd is the property instance", layer2.getPropertyInstance(property1), cmds.get(i++));
+ assertSame("cmd is the property instance", null, cmds.get(i++));
+
+ // Check wrong view
+ cmds = layer.getPropertiesComputePropertyValueCommand(view4, Arrays.asList(property3));
+ assertNull("cmd created", cmds);
+
+ // Check wrong view
+ cmds = layer.getPropertiesComputePropertyValueCommand(view3, Arrays.asList(property1, property2));
+ assertNull("cmd created", cmds);
+
+ // Check list with null
+ cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, null, property2));
+ assertNotNull("cmd created", cmds);
+ assertSame("cmd size is equals to views size", 3, cmds.size());
+ i=0;
+ assertSame("cmd is the property instance", layer1.getPropertyInstance(property1), cmds.get(i++));
+ assertSame("cmd is null", null, cmds.get(i++));
+ assertSame("cmd is the property instance", layer2.getPropertyInstance(property2), cmds.get(i++));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl#TopLayerOperatorImpl()}.
+ */
+ @Test
+ public void testTopLayerOperatorImpl() {
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ assertNotNull("object created", layer);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImplTest.java
new file mode 100644
index 00000000000..d0f5d5f06a0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImplTest.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class TypeRegistryImplTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl#TypeRegistryImpl()}.
+ */
+ @Test
+ public void testTypeRegistryImpl() {
+ TypeRegistry registry = LayersFactory.eINSTANCE.createTypeRegistry();
+ assertNotNull("registry created", registry);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl#init()}.
+ */
+ @Test
+ public void testInit() {
+ TypeRegistry registry = LayersFactory.eINSTANCE.createTypeRegistry();
+ assertNotNull("registry created", registry);
+
+ // Try to get initialized types
+ assertNotNull( "type found", registry.getTypes().get("boolean") );
+ assertNotNull( "type found", registry.getTypes().get("int") );
+ assertNotNull( "type found", registry.getTypes().get("String") );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl#getTypes()}.
+ */
+ @Test
+ public void testGetTypes() {
+ TypeRegistry registry = LayersFactory.eINSTANCE.createTypeRegistry();
+ assertNotNull("registry created", registry);
+
+ assertNotNull("map created", registry.getTypes());
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoaderTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoaderTest.java
new file mode 100644
index 00000000000..393dd60049b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoaderTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerOperatorDescriptorRegistryLoaderTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for constructor.
+ */
+ @Test
+ public void testLayerOperatorDescriptorRegistryLoader() {
+
+ LayerOperatorDescriptorRegistryLoader loader = new LayerOperatorDescriptorRegistryLoader();
+
+ assertNotNull("object created", loader);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayerOperatorDescriptorRegistryLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}.
+ * Check if the loader correctly initialize the LayerOperator and the Operators.
+ * Registry loading do not use this loader (LayerOperatorDescriptorRegistryLoader) anymore.
+ * The new loader {@link RegistriesLoader} is now used.
+ *
+ * @throws NotFoundException
+ */
+ @Test
+ @Ignore
+ public void testLoadRegistry() throws NotFoundException {
+
+ // Create a PropertyRegistry
+ PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+ // Create a registry
+ int propertiesCollectionSize = propertyRegistry.getPropertiesCount();
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertiesCollectionSize);
+ // Create the loader
+ LayerOperatorDescriptorRegistryLoader loader = new LayerOperatorDescriptorRegistryLoader();
+
+
+ // Load the registry with the loader
+ loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
+
+ // check registry content
+ assertNotNull("layerOperator AndLayerOperator loaded", registry.getLayerOperatorDescriptor("OrStackedLayerOperator") );
+ assertNotNull("layerOperator OrLayerOperator loaded", registry.getLayerOperatorDescriptor("AndStackedLayerOperator") );
+
+
+ assertNotNull("Operator BooleanAnd loaded", registry.getPropertyOperator("booleanOr"));
+ assertNotNull("Operator BooleanAnd loaded", registry.getPropertyOperator("booleanAnd"));
+
+ // Check attachment
+ Property isVisibleProp = propertyRegistry.getProperty("isVisible");
+ assertNotNull("property set", isVisibleProp);
+ assertNotNull("Operator attached to AndLayerOperator ", registry.getLayerOperatorDescriptor("OrStackedLayerOperator").getPropertyOperator(isVisibleProp) );
+ assertNotNull("Operator attached to OrLayerOperator ", registry.getLayerOperatorDescriptor("AndStackedLayerOperator").getPropertyOperator(isVisibleProp) );
+ // check if the right operator is attached to the right layerOperator
+ assertSame("Operator attached to AndLayerOperator ", registry.getPropertyOperator("booleanOr"), registry.getLayerOperatorDescriptor("OrStackedLayerOperator").getPropertyOperator(isVisibleProp) );
+ assertSame("Operator attached to OrLayerOperator ", registry.getPropertyOperator("booleanAnd"), registry.getLayerOperatorDescriptor("AndStackedLayerOperator").getPropertyOperator(isVisibleProp) );
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelTest.java
new file mode 100644
index 00000000000..69d1f2726b2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelTest.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createFolder;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorConfig;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersConfigModelTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel#LayersConfigModel()}.
+ */
+ @Test
+ public void testLayersConfigModel() {
+ // Create object
+ LayersConfigModel model = new LayersConfigModel();
+
+ assertNotNull("object created", model);
+ // Check if resource and root folder are created
+ assertNotNull("resource created", model.getResource());
+ assertNotNull("root folder created", model.getRootFolder());
+
+ }
+
+ /**
+ * Check if we can initialize an instance externally.
+ */
+ @Test
+ public void testExternalInitialization() {
+ // Create object
+ LayersConfigModel model = new LayersConfigModel();
+
+ initLayersConfigModel(model);
+
+ // Do checking
+ assertTrue("Some def are set in root", model.getRootFolder().getFolderElements().size()>0);
+ }
+
+ /**
+ * Initialize the provided model with some defs for tests.
+ *
+ * @param model
+ */
+ private void initLayersConfigModel(LayersConfigModel model) {
+ // Create model
+ Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
+
+ createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorA", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorB", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorC", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorD", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ }
+
+ /**
+ * Check if internal initialization work.
+ */
+ @Test
+ public void testInternalInitialization() {
+ // Create object
+ LayersConfigModel model = LayersConfigModel.getInstance();
+
+ assertNotNull("object created", model);
+ assertTrue("Some def are set in root", model.getRootFolder().getFolderElements().size()>0);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel#getResource()}.
+ */
+ @Test
+ public void testGetResource() {
+ // Create object
+ LayersConfigModel model = new LayersConfigModel();
+
+ assertNotNull("resource created", model.getResource());
+
+ assertTrue("resource populated", model.getResource().getContents().size()>0);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoaderTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoaderTest.java
new file mode 100644
index 00000000000..dcc08027ad6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoaderTest.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createFolder;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorsMultipleBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createOperatorBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyId;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createTypeConfig;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class RegistriesLoaderTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#RegistriesLoader(org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel)}.
+ */
+ @Test
+ public void testRegistriesLoader() {
+
+ /**
+ * Create a model used as input for the loader.
+ */
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigModel(model);
+ // Create the loader
+ RegistriesLoader loader = new RegistriesLoader(model);
+
+ // Check creation
+ assertNotNull("loader created", loader);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}.
+ */
+ @Test
+ public void testLoadLayerOperator() {
+
+ /**
+ * Create a model used as input for the loader.
+ */
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigModel(model);
+ // Create the loader
+ RegistriesLoader loader = new RegistriesLoader(model);
+ // CreatePropertyRegistry
+ PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+ // Create a LayerOperatorRegistry
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
+
+ // call load
+ loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
+
+ // Check result
+ assertTrue( "descriptors created", registry.getDescriptors().size()>0 );
+ assertTrue( "operators created", registry.getPropertyOperators().size()>0 );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testLoadLayerOperatorDescriptorRegistry() throws NotFoundException {
+
+ /**
+ * Create a model used as input for the loader.
+ */
+ LayersConfigModel model = new LayersConfigModel();
+ initLayersConfigModel(model);
+ // Create the loader
+ RegistriesLoader loader = new RegistriesLoader(model);
+ // CreatePropertyRegistry
+ PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+ // Create a LayerOperatorRegistry
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
+
+ // call load
+ loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
+
+ // Check result
+ assertTrue( "descriptors created", registry.getDescriptors().size()>0 );
+ assertTrue( "operators created", registry.getPropertyOperators().size()>0 );
+
+ // Check if a layer as its operaor
+ assertNotNull("descriptor found", registry.getLayerOperatorDescriptor("StackedLayersOperatorA"));
+
+ // check its operators
+ assertTrue("operators set", registry.getLayerOperatorDescriptor("StackedLayersOperatorA").getPropertyOperators().size() >0);
+ // check its operators
+ Property property = propertyRegistry.getProperty("isVisible");
+ assertNotNull("operator found", registry.getLayerOperatorDescriptor("StackedLayersOperatorA").getPropertyOperator(property) );
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}.
+ * @throws NotFoundException
+ */
+ @Test
+ public void testLoadLayerOperatorOnly() throws NotFoundException {
+
+ /**
+ * Create a model used as input for the loader.
+ */
+ LayersConfigModel model = new LayersConfigModel();
+ initModelWithLayerOperatorOnly(model);
+ // Create the loader
+ RegistriesLoader loader = new RegistriesLoader(model);
+ // CreatePropertyRegistry
+ PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+ // Create a LayerOperatorRegistry
+ LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+ registry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
+
+ // call load
+ loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
+
+ // Check result
+ assertTrue( "descriptors created", registry.getDescriptors().size()>0 );
+ assertNotNull("descriptor found", registry.getLayerOperatorDescriptor("StackedLayersOperatorA"));
+ }
+
+ /**
+ *
+ * @param model
+ */
+ private void initModelWithLayerOperatorOnly(LayersConfigModel model) {
+ // Create model
+ Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
+
+ // Create LayerOperators descriptor
+ LayerOperatorConfig layerOpA = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorA", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ LayerOperatorConfig layerOpB = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorB", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorC", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorD", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ }
+ /**
+ * Initialize the provided model with some defs for tests.
+ *
+ * @param model
+ */
+ private void initLayersConfigModel(LayersConfigModel model) {
+ // Create model
+ Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
+
+ // Create LayerOperators descriptor
+ LayerOperatorConfig layerOpA = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorA", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ LayerOperatorConfig layerOpB = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorB", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorC", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+ createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorD", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+
+ // Create Operators
+ Folder operatorFolder = createFolder(model.getRootFolder(), "operatorDesc");
+ OperatorConfig operatorBooleanAnd = createPropertyOperatorConfig(operatorFolder, "operatorBooleanAnd", BooleanAndOperator.class.getName());
+ OperatorConfig operatorBooleanOr = createPropertyOperatorConfig(operatorFolder, "operatorBooleanOr", BooleanOrOperator.class.getName());
+
+
+ // Create basic types
+ Folder typeFolder = createFolder(model.getRootFolder(), "types");
+ TypeConfig typeBoolean = createTypeConfig(typeFolder, "boolean");
+ TypeConfig typeInt = createTypeConfig(typeFolder, "int");
+ TypeConfig typeString = createTypeConfig(typeFolder, "String");
+ TypeConfig typeFont = createTypeConfig(typeFolder, "Font");
+ TypeConfig typeColor = createTypeConfig(typeFolder, "Color");
+ TypeConfig typeFill = createTypeConfig(typeFolder, "Fill");
+ TypeConfig typeLine = createTypeConfig(typeFolder, "Line");
+
+ // Create properties
+ Folder propertiesFolder = createFolder(model.getRootFolder(), "properties");
+ PropertyId propertyIsVisible = createPropertyId(propertiesFolder, "isVisible", typeBoolean);
+ PropertyId propertyIsAbstract = createPropertyId(propertiesFolder, "isAbstract", typeBoolean);
+ PropertyId propertyFill = createPropertyId(propertiesFolder, "fill", typeFill);
+ PropertyId propertyLine = createPropertyId(propertiesFolder, "line", typeLine);
+ PropertyId propertyFont = createPropertyId(propertiesFolder, "font", typeFont);
+ PropertyId propertyBgcolor = createPropertyId(propertiesFolder, "bgcolor", typeColor);
+ PropertyId propertyFgcolor = createPropertyId(propertiesFolder, "fgcolor", typeColor);
+
+ // Bind operators to layers
+ Folder opBindingFolder = createFolder(model.getRootFolder(), "opBindings");
+
+ LayerOperatorMultipleBinding layerOpBindingsA = createLayerOperatorsMultipleBinding(opBindingFolder, layerOpA);
+ createOperatorBinding(layerOpBindingsA, propertyIsVisible, operatorBooleanAnd);
+ createOperatorBinding(layerOpBindingsA, propertyIsAbstract, operatorBooleanAnd);
+
+ LayerOperatorMultipleBinding layerOpBindingsB = createLayerOperatorsMultipleBinding(opBindingFolder, layerOpB);
+ createOperatorBinding(layerOpBindingsB, propertyIsVisible, operatorBooleanOr);
+ createOperatorBinding(layerOpBindingsB, propertyIsAbstract, operatorBooleanOr);
+
+ }
+
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayerFactoryTestUtilsTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayerFactoryTestUtilsTest.java
new file mode 100644
index 00000000000..3e87090dbed
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayerFactoryTestUtilsTest.java
@@ -0,0 +1,98 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import static org.junit.Assert.fail;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.LayersFactoryTestUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test utility to create tree of layers..
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerFactoryTestUtilsTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test creation of a tree of layers.
+ */
+ @Test
+ public void testCreateTreeImpl() {
+ // Create requested objects
+ LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+ PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+ // Create stack
+ LayersStack stack = application.getLayersStackFor(diagram);
+
+ // Create layers
+ LayersFactoryTestUtils factory = new LayersFactoryTestUtils(application);
+ factory.newTopLayer("top",
+ factory.newLayer("layer1"),
+ factory.newLayer("layer2"),
+ factory.newTopLayer("container1",
+ factory.newLayer("layer3") )
+ );
+
+ TopLayerOperator top = (TopLayerOperator)factory.getLayer("top");
+ TopLayerOperator container1 = (TopLayerOperator)factory.getLayer("top");
+ Layer layer1 = (Layer)factory.getLayer("layer1");
+ Layer layer2 = (Layer)factory.getLayer("layer1");
+ Layer layer3 = (Layer)factory.getLayer("layer1");
+
+
+ // Assert
+ assertNotNull("object created", top);
+
+ assertNotNull("object created", container1);
+
+ assertNotNull("object created", layer1);
+
+ assertNotNull("object created", layer2);
+
+ assertNotNull("object created", layer3);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryForStackTestUtils.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryForStackTestUtils.java
new file mode 100644
index 00000000000..276aa2b99ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryForStackTestUtils.java
@@ -0,0 +1,173 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * Utilities to create programmatically a Tree of layers with the {@link LayersFactoryForStack}
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersFactoryForStackTestUtils {
+
+ /**
+ * Application object.
+ */
+ protected LayersStackApplication application;
+
+ /**
+ * Stack object.
+ */
+ protected LayersStack stack;
+
+ /**
+ * factory object.
+ */
+ protected LayersFactoryForStack factory;
+
+ protected Map<String, LayerExpression> createdLayers = new HashMap<String, LayerExpression>();
+
+
+ /**
+ * Constructor.
+ *
+ * @param stack
+ * @param factory
+ * @param application
+ */
+ public LayersFactoryForStackTestUtils(LayersStack stack, LayersFactoryForStack factory, LayersStackApplication application) {
+ this.stack = stack;
+ this.factory = factory;
+ this.application = application;
+ }
+
+ /**
+ * Constructor.
+ * Use the global factory for {@link LayersFactoryForStack}
+ * @param stack
+ * @param application
+ */
+ public LayersFactoryForStackTestUtils(LayersStack stack, LayersStackApplication application) {
+ this.stack = stack;
+ this.factory = LayersFactoryForStack.eINSTANCE;
+ this.application = application;
+ }
+
+ /**
+ * @return the createdLayers
+ */
+ public Map<String, LayerExpression> getCreatedLayers() {
+ return createdLayers;
+ }
+
+ /**
+ * @return the createdLayers
+ */
+ public LayerExpression getLayer(String name) {
+ return createdLayers.get(name);
+ }
+
+ /**
+ * Create a TopLayer
+ * @return
+ * @throws LayersException
+ */
+ public TopLayerOperator newTopLayer() throws LayersException {
+ // Create a TopLayer
+ TopLayerOperator layer = factory.createTopLayerOperator(stack, stack, application);
+
+ return layer;
+ }
+
+ /**
+ * Create a TopLayer
+ * @return
+ * @throws LayersException
+ */
+ public TopLayerOperator newTopLayer(String name) throws LayersException {
+ TopLayerOperator layer = newTopLayer();
+ createdLayers.put(name, layer);
+ return layer;
+
+ }
+
+ /**
+ * Create a TopLayer and add the specified sublayers to it.
+ * Sublayers are initialized with {@link LayersFactoryForStack#initLayer(LayerExpression, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, LayersStack, LayersStackApplication)}
+ * before being added to their parent.
+ * @return
+ * @throws LayersException
+ */
+ public TopLayerOperator newTopLayer(String name, LayerExpression ...exprs) throws LayersException {
+
+ TopLayerOperator layer = newTopLayer(exprs);
+ createdLayers.put(name, layer);
+ return layer;
+ }
+
+ /**
+ * Create a TopLayer and add the specified sublayers to it.
+ * Sublayers are initialized with {@link LayersFactoryForStack#initLayer(LayerExpression, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, LayersStack, LayersStackApplication)}
+ * before being added to their parent.
+ *
+ * @return
+ * @throws LayersException
+ */
+ public TopLayerOperator newTopLayer(LayerExpression ...exprs) throws LayersException {
+ // Create a TopLayer
+ TopLayerOperator layer = newTopLayer();
+
+ for( LayerExpression l : exprs) {
+ factory.initLayer(l, layer, stack, application);
+ }
+
+ return layer;
+ }
+
+ /**
+ * Create an uninitialized Layer
+ * @return
+ */
+ public LayerExpression newLayer() {
+ // Create a TopLayer
+ LayerExpression layer = LayersFactory.eINSTANCE.createLayer();
+
+ return layer;
+ }
+
+ /**
+ * Create a an uninitialized Layer and store it in the map of layers under the specified name.
+ * @return
+ */
+ public LayerExpression newLayer(String name) {
+ LayerExpression layer = newLayer();
+ createdLayers.put(name, layer);
+ return layer;
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryTestUtils.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryTestUtils.java
new file mode 100644
index 00000000000..319ef88f59b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryTestUtils.java
@@ -0,0 +1,136 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * Utilities to create Layers for tests
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersFactoryTestUtils {
+
+ /**
+ * Application object.
+ */
+ protected LayersStackApplication application;
+
+ protected Map<String, LayerExpression> createdLayers = new HashMap<String, LayerExpression>();
+
+ /**
+ * Constructor.
+ *
+ * @param application
+ */
+ public LayersFactoryTestUtils(LayersStackApplication application) {
+ this.application = application;
+ }
+
+ /**
+ * @return the createdLayers
+ */
+ public Map<String, LayerExpression> getCreatedLayers() {
+ return createdLayers;
+ }
+
+ /**
+ * @return the createdLayers
+ */
+ public LayerExpression getLayer(String name) {
+ return createdLayers.get(name);
+ }
+
+ /**
+ * Create a TopLayer
+ * @return
+ */
+ public TopLayerOperator newTopLayer() {
+ // Create a TopLayer
+ TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+ layer.setApplication(application);
+
+ return layer;
+ }
+
+ /**
+ * Create a TopLayer
+ * @return
+ */
+ public TopLayerOperator newTopLayer(String name) {
+ TopLayerOperator layer = newTopLayer();
+ createdLayers.put(name, layer);
+ return layer;
+
+ }
+
+ /**
+ * Create a TopLayer
+ * @return
+ */
+ public TopLayerOperator newTopLayer(String name, LayerExpression ...exprs) {
+
+ TopLayerOperator layer = newTopLayer(exprs);
+ createdLayers.put(name, layer);
+ return layer;
+ }
+
+ /**
+ * Create a TopLayer
+ * @return
+ */
+ public TopLayerOperator newTopLayer(LayerExpression ...exprs) {
+ // Create a TopLayer
+ TopLayerOperator layer = newTopLayer();
+
+ for( LayerExpression l : exprs) {
+ layer.getLayers().add(l);
+ }
+
+ return layer;
+ }
+
+ /**
+ * Create a Layer
+ * @return
+ */
+ public LayerExpression newLayer() {
+ // Create a TopLayer
+ LayerExpression layer = LayersFactory.eINSTANCE.createLayer();
+ layer.setApplication(application);
+
+ return layer;
+ }
+
+ /**
+ * Create a TopLayer
+ * @return
+ */
+ public LayerExpression newLayer(String name) {
+ LayerExpression layer = newLayer();
+ createdLayers.put(name, layer);
+ return layer;
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedListTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedListTest.java
new file mode 100644
index 00000000000..9534d7309ce
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedListTest.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class PropertyIndexedListTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList#PropertyIndexedList(java.util.Map, java.lang.Class, org.eclipse.emf.ecore.InternalEObject, int, int)}.
+ */
+ @Test
+ public void testPropertyIndexedList() {
+
+ // Create an object which already have a map
+ // Here, we use Layer
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertTrue("registry has proprties", registry.getProperties().size() >0);
+
+ PropertyIndexedList<TypeInstance> list = new PropertyIndexedList<TypeInstance>(layer.getPropertyValueMap(), TypeInstance.class, (InternalEObject)layer, 0, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP, NullInstance.NULLINSTANCE);
+ list.setPropertyList(registry.getProperties());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList#setPropertyList(java.util.List)}.
+ */
+ @Test
+ public void testSetPropertyList() {
+ // Create an object which already have a map
+ // Here, we use Layer
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertTrue("registry has proprties", registry.getProperties().size() >0);
+
+ PropertyIndexedList<TypeInstance> list = new PropertyIndexedList<TypeInstance>(layer.getPropertyValueMap(), TypeInstance.class, (InternalEObject)layer, 0, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP, NullInstance.NULLINSTANCE);
+ list.setPropertyList(registry.getProperties());
+
+ assertEquals("list size is correct", registry.getProperties().size(), list.size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList#get(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+ * @throws BadStateException
+ */
+ @Test
+ public void testGetProperty() throws BadStateException {
+ // Create an object which already have a map
+ // Here, we use Layer
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertTrue("registry has proprties", registry.getProperties().size() >0);
+
+ PropertyIndexedList<TypeInstance> list = new PropertyIndexedList<TypeInstance>(layer.getPropertyValueMap(), TypeInstance.class, (InternalEObject)layer, 0, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP, NullInstance.NULLINSTANCE);
+ list.setPropertyList(registry.getProperties());
+
+ // Add an instnace in the map
+ Property property0 = registry.getProperties().get(0);
+ TypeInstance instance0 = property0.createInstance();
+ layer.getPropertyValueMap().put(property0.getName(), instance0);
+
+ // checks
+ assertEquals("list size is correct", registry.getProperties().size(), list.size());
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList#set(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.Object)}.
+ * @throws BadStateException
+ */
+ @Test
+ public void testSetPropertyT() throws BadStateException {
+ // Create an object which already have a map
+ // Here, we use Layer
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+ assertTrue("registry has proprties", registry.getProperties().size() >0);
+
+ PropertyIndexedList<TypeInstance> list = new PropertyIndexedList<TypeInstance>(layer.getPropertyValueMap(), TypeInstance.class, (InternalEObject)layer, 0, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP, NullInstance.NULLINSTANCE);
+ list.setPropertyList(registry.getProperties());
+
+ // Add an instnace in the map
+ Property property0 = registry.getProperties().get(0);
+ TypeInstance instance0 = property0.createInstance();
+ layer.getPropertyValueMap().put(property0.getName(), instance0);
+
+ // Check that the instance is in the list
+ assertSame("value is in the list at right position", instance0, list.get(0));
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactoryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactoryTest.java
new file mode 100644
index 00000000000..ff122ba166d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactoryTest.java
@@ -0,0 +1,93 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author dumoulin
+ *
+ */
+public class DiagramViewChangedEventNotifierFactoryTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+ */
+ @Test
+ public void testDiagramViewChangedEventNotifierFactory() {
+
+ DiagramViewChangedEventNotifierFactory notifierFactory = new DiagramViewChangedEventNotifierFactory();
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+
+ // Action
+ DiagramViewChangedEventNotifier eventNotifier = (DiagramViewChangedEventNotifier)notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+
+ // Assert
+ assertNotNull("object created", eventNotifier);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+ */
+ @Test
+ public void testReturnSameInstanceImpl() {
+
+ DiagramViewChangedEventNotifierFactory notifierFactory = new DiagramViewChangedEventNotifierFactory();
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Diagram diagram2 = modelsFactory.newDiagram();
+
+ // Action
+ DiagramViewChangedEventNotifier eventNotifier11 = (DiagramViewChangedEventNotifier)notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+ DiagramViewChangedEventNotifier eventNotifier12 = (DiagramViewChangedEventNotifier)notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+
+ DiagramViewChangedEventNotifier eventNotifier21 = (DiagramViewChangedEventNotifier)notifierFactory.adapt(diagram2, DiagramViewChangedEventNotifier.class);
+ DiagramViewChangedEventNotifier eventNotifier22 = (DiagramViewChangedEventNotifier)notifierFactory.adapt(diagram2, DiagramViewChangedEventNotifier.class);
+
+ // Assert
+ assertNotNull("object created", eventNotifier11);
+ assertNotNull("object created", eventNotifier21);
+
+ assertNotEquals("instance are different between diagram", eventNotifier11, eventNotifier21);
+
+ assertEquals("return the same instance", eventNotifier11, eventNotifier12);
+ assertEquals("return the same instance", eventNotifier21, eventNotifier22);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierTest.java
new file mode 100644
index 00000000000..fa324b55ebe
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierTest.java
@@ -0,0 +1,149 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces.TriggeredEvent;
+import org.eclipse.uml2.uml.Class;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewChangedEventNotifierTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#DiagramViewChangedEventNotifier()}.
+ */
+ @Test
+ public void testDiagramViewChangedEventNotifier() {
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+ Diagram diagram1 = factory.newDiagram();
+
+ DiagramViewChangedEventNotifier notifier = new DiagramViewChangedEventNotifier();
+
+ Class c1 = factory.newClass(diagram1, "C1");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#addEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testAddEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#removeEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+ */
+ @Test
+ @Ignore
+ public void testRemoveEventListener() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#fireDiagramViewAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireDiagramViewAddedEvent() {
+ DiagramViewChangedEventNotifierFactory notifierFactory = new DiagramViewChangedEventNotifierFactory();
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+// Shape shape1 = (Shape)modelsFactory.lookupViewFor(diagram1, c1);
+
+ DiagramViewChangedEventNotifier eventNotifier = (DiagramViewChangedEventNotifier)notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+
+ TraceDiagramViewChangedEventListener listener = new TraceDiagramViewChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ TriggeredEventTraces<Notification> traces = listener.traces;
+
+ // Action
+ traces.clear();
+ // Modify diagram
+ Class c2 = modelsFactory.newClass(diagram1, "C2");
+ Shape shape2 = (Shape)modelsFactory.lookupViewFor(diagram1, c2);
+
+ // Assert
+ assertTrue("event recorded", traces.contains("diagramViewAdded"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+
+ TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+
+ assertEquals("right element in event", shape2, event.notifier.getNewValue() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireDiagramViewRemovedEvent() {
+ DiagramViewChangedEventNotifierFactory notifierFactory = new DiagramViewChangedEventNotifierFactory();
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+ Shape shape1 = (Shape)modelsFactory.lookupViewFor(diagram1, c1);
+ Class c2 = modelsFactory.newClass(diagram1, "C2");
+ Shape shape2 = (Shape)modelsFactory.lookupViewFor(diagram1, c2);
+
+ DiagramViewChangedEventNotifier eventNotifier = (DiagramViewChangedEventNotifier)notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+
+ TraceDiagramViewChangedEventListener listener = new TraceDiagramViewChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ TriggeredEventTraces<Notification> traces = listener.traces;
+
+ // Action
+ traces.clear();
+ // Modify diagram
+ View removedShape = modelsFactory.remove(diagram1, c2);
+
+ // Assert
+ assertTrue("event recorded", traces.contains("diagramViewRemoved"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+
+ TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+
+ assertEquals("right element in event", shape2, event.notifier.getOldValue() );
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactoryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactoryTest.java
new file mode 100644
index 00000000000..18a4e058396
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactoryTest.java
@@ -0,0 +1,90 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test if the factory return the same Notifier for a given {@link LayersStack}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersTreeEventNotifierFactoryTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+ */
+ @Test
+ public void testAdapterFactoryImpl() {
+
+ LayersStack stack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifierFactory factory = new LayersTreeEventNotifierFactory();
+
+ // Action
+ LayersTreeEventNotifier eventNotifier = (LayersTreeEventNotifier)factory.adapt(stack, LayersTreeEventNotifier.class);
+
+ // Assert
+ assertNotNull("object created", eventNotifier);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+ */
+ @Test
+ public void testReturnSameInstanceImpl() {
+
+ LayersStack stack1 = LayersFactory.eINSTANCE.createLayersStack();
+ LayersStack stack2 = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifierFactory factory = new LayersTreeEventNotifierFactory();
+
+ // Action
+ LayersTreeEventNotifier eventNotifier11 = (LayersTreeEventNotifier)factory.adapt(stack1, LayersTreeEventNotifier.class);
+ LayersTreeEventNotifier eventNotifier12 = (LayersTreeEventNotifier)factory.adapt(stack1, LayersTreeEventNotifier.class);
+
+ LayersTreeEventNotifier eventNotifier21 = (LayersTreeEventNotifier)factory.adapt(stack2, LayersTreeEventNotifier.class);
+ LayersTreeEventNotifier eventNotifier22 = (LayersTreeEventNotifier)factory.adapt(stack2, LayersTreeEventNotifier.class);
+
+ // Assert
+ assertNotNull("object created", eventNotifier11);
+ assertNotNull("object created", eventNotifier21);
+
+ assertNotEquals("instance are different between stack", eventNotifier11, eventNotifier21);
+
+ assertEquals("return the same instance", eventNotifier11, eventNotifier12);
+ assertEquals("return the same instance", eventNotifier21, eventNotifier22);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierTest.java
new file mode 100644
index 00000000000..60a17207734
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierTest.java
@@ -0,0 +1,356 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersTreeEventNotifierTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#LayersTreeEventNotifier(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)}.
+ */
+ @Test
+ public void testLayersTreeEventNotifier() {
+
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+// // Add a trace listener
+// ILayersTreeEventListener listener = new TraceLayersModelEventListener();
+// notifier.addLayersModelEventListener(listener);
+
+ // Check creation
+ assertNotNull("notifier created", notifier);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#activate()}.
+ */
+ @Test
+ @Ignore
+ public void testActivate() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#deactivate()}.
+ */
+ @Test
+ @Ignore
+ public void testDeactivate() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#dispose()}.
+ */
+ @Test
+ public void testDispose() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // dispose notifier
+ assertFalse("notifier disposed", notifier.isDisposed());
+ notifier.dispose();
+ assertTrue("notifier disposed", notifier.isDisposed());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#addLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersTreeEventListener)}.
+ */
+ @Test
+ public void testAddLayersModelEventListener() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+ // Add a trace listener
+ ILayersTreeEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ // Check creation
+ assertNotNull("notifier created", notifier);
+ assertTrue( "listener added to internal list", notifier.listeners.contains(listener) );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#removeLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersTreeEventListener)}.
+ */
+ @Test
+ public void testRemoveLayersModelEventListener() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+ // Add a trace listener
+ ILayersTreeEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+ assertTrue( "listener added to internal list", notifier.listeners.contains(listener) );
+
+ // Remove the listener
+ notifier.removeLayersModelEventListener(listener);
+ assertFalse( "listener removed from internal list", notifier.listeners.contains(listener) );
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerAdded(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayerAdded() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ System.err.println("setLayers(layerOp1)");
+ layersStack.setLayers(layerOp1);
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ System.err.println("layerOp1.getLayers().add(layer1)");
+ layerOp1.getLayers().add(layer1);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerAdded"));
+ assertEquals("one event recorded", 2, traces.traces.size() );
+ assertEquals("one event recorded", "layerAdded", traces.traces.get(1).name );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayerRemoved() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // Remove layer
+ traces.clear();
+ layerOp1.getLayers().remove(layer1);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerRemoved"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerRemoved", traces.traces.get(0).name );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayerSetForRootLayer() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ // Add a layer as root
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // Remove root layer
+ traces.clear();
+ layersStack.setLayers(null);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+ // Note that no event is sent for the nested layer
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireEventWhenRootLayerIsReplaced() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ // Add a layer as root
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // replace root layer
+ traces.clear();
+ Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+ layersStack.setLayers(layer2);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireEventWhenLayerIsReplaced() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ // Add a layer as root
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // replace root layer
+ traces.clear();
+ Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().set(0, layer2);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerSet"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerSet", traces.traces.get(0).name );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerMoved(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testFireLayerMoved() {
+ // Create a notifier
+ LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+ LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+ // Add a trace listener
+ TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+ notifier.addLayersModelEventListener(listener);
+
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ // Add a layer
+ LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ layersStack.setLayers(layerOp1);
+
+ // Add a layer
+ Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer1);
+
+ // Add a layer
+ Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+ layerOp1.getLayers().add(layer2);
+
+ // move layer
+ // EMF list are EList, which contains a move operation
+ traces.clear();
+ EList<LayerExpression> list = (EList<LayerExpression>)layerOp1.getLayers();
+ list.move(0, layer2);
+
+ // Check events
+ assertTrue("event recorded", traces.contains("layerMoved"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+ assertEquals("one event recorded", "layerMoved", traces.traces.get(0).name );
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceDiagramViewChangedEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceDiagramViewChangedEventListener.java
new file mode 100644
index 00000000000..0170b3c563b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceDiagramViewChangedEventListener.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceDiagramViewChangedEventListener implements IDiagramViewEventListener {
+
+ public TriggeredEventTraces<Notification> traces = new TriggeredEventTraces<Notification>();
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void diagramViewAdded(Notification notification) {
+ traces.addTrace("diagramViewAdded", notification);
+
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void diagramViewRemoved(Notification notification) {
+ traces.addTrace("diagramViewRemoved", notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerRemoved(org.eclipse.emf.common.notify.Notification)
+ * This does not exist actually.
+ * @param notification
+ */
+ public void diagramViewMoved(Notification notification) {
+ traces.addTrace("diagramViewMoved", notification);
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceLayersModelEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceLayersModelEventListener.java
new file mode 100644
index 00000000000..2a730c14c06
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceLayersModelEventListener.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceLayersModelEventListener implements ILayersTreeEventListener {
+
+ public TriggeredEventTraces<Notification> traces = new TriggeredEventTraces<Notification>();
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerSet(Notification notification) {
+ traces.addTrace("layerSet", notification);
+
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerAdded(Notification notification) {
+ traces.addTrace("layerAdded", notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerRemoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerRemoved(Notification notification) {
+ traces.addTrace("layerRemoved", notification);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerMoved(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void layerMoved(Notification notification) {
+ traces.addTrace("layerMoved", notification);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceUmlNamedElementChangedEventListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceUmlNamedElementChangedEventListener.java
new file mode 100644
index 00000000000..c5033527d80
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceUmlNamedElementChangedEventListener.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceUmlNamedElementChangedEventListener implements IUmlNamedElementChangedEventListener {
+
+ public TriggeredEventTraces<Notification> traces = new TriggeredEventTraces<Notification>();
+
+ /**
+ * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ @Override
+ public void valueChanged(Notification notification) {
+ traces.addTrace("valueChanged", notification);
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactoryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactoryTest.java
new file mode 100644
index 00000000000..9f8b9f3e769
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactoryTest.java
@@ -0,0 +1,95 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.uml2.uml.Class;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class UmlNamedElementChangedEventNotifierFactoryTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+ */
+ @Test
+ public void testUmlNamedElementChangedEventNotifierFactory() {
+
+ UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ // Action
+ UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+ // Assert
+ assertNotNull("object created", eventNotifier);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+ */
+ @Test
+ public void testReturnSameInstanceImpl() {
+
+ UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+ Class c2 = modelsFactory.newClass(diagram1, "C2");
+
+ // Action
+ UmlNamedElementChangedEventNotifier eventNotifier11 = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+ UmlNamedElementChangedEventNotifier eventNotifier12 = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+ UmlNamedElementChangedEventNotifier eventNotifier21 = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c2, UmlNamedElementChangedEventNotifier.class);
+ UmlNamedElementChangedEventNotifier eventNotifier22 = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c2, UmlNamedElementChangedEventNotifier.class);
+
+ // Assert
+ assertNotNull("object created", eventNotifier11);
+ assertNotNull("object created", eventNotifier21);
+
+ assertNotEquals("instance are different between diagram", eventNotifier11, eventNotifier21);
+
+ assertEquals("return the same instance", eventNotifier11, eventNotifier12);
+ assertEquals("return the same instance", eventNotifier21, eventNotifier22);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierTest.java
new file mode 100644
index 00000000000..f22d8d76947
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierTest.java
@@ -0,0 +1,201 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces.TriggeredEvent;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class UmlNamedElementChangedEventNotifierTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#UmlNamedElementChangedEventNotifier()}.
+ */
+ @Test
+ public void testUmlNamedElementChangedEventNotifier() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+ UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+ // Assert
+ assertNotNull("notifier created", eventNotifier);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#addEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+ */
+ @Test
+ public void testAddEventListener() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+ UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+ TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+ eventNotifier.addEventListener(listener);
+
+ // Assert
+ assertTrue("listener added", eventNotifier.listeners.contains(listener));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#removeEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+ */
+ @Test
+ public void testRemoveEventListener() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+ UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+ TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ eventNotifier.removeEventListener(listener);
+
+ // Assert
+ assertFalse("listener removed", eventNotifier.listeners.contains(listener));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#fireDiagramViewAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testNameChangedEvent() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+ UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+ TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ TriggeredEventTraces<Notification> traces = listener.traces;
+
+ // Action
+ traces.clear();
+ // Modify ele
+ c1.setName("newName");
+
+ // Assert
+ // Assert
+ assertTrue("event recorded", traces.contains("valueChanged"));
+ assertEquals("one event recorded", 1, traces.traces.size() );
+
+ TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+
+ assertEquals("right element in event", c1, event.notifier.getNotifier() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testPropertyAdded() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+ UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+ UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+ TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ int expectedEventCount = 2;
+
+ // Action
+ traces.clear();
+ // Modify ele
+ Property p1 = modelsFactory.newProperty(c1, "p1");
+
+ // Assert
+ // Assert
+ assertTrue("event recorded", traces.contains("valueChanged"));
+ assertEquals("one event recorded", expectedEventCount, traces.traces.size() );
+
+// TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+// assertEquals("right element in event", c1, event.notifier.getNotifier() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+ */
+ @Test
+ public void testPropertyNameChanged() {
+ NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 = modelsFactory.newDiagram();
+ Class c1 = modelsFactory.newClass(diagram1, "C1");
+ Property p1 = modelsFactory.newProperty(c1, "p1");
+
+ UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+ UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier)notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+ TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+ eventNotifier.addEventListener(listener);
+ TriggeredEventTraces<Notification> traces = listener.traces;
+ int expectedEventCount = 1;
+
+ // Action
+ traces.clear();
+ // Modify ele
+ p1.setName("NewName");
+
+ // Assert
+ // Assert
+ assertTrue("event recorded", traces.contains("valueChanged"));
+ assertEquals("one event recorded", expectedEventCount, traces.traces.size() );
+
+// TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+// assertEquals("right element in event", c1, event.notifier.getNotifier() );
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperatorTest.java
new file mode 100644
index 00000000000..bcf911d4cb2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperatorTest.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanAndOperatorTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Create an instance of boolean value cmd.
+ * @param b
+ * @return
+ */
+ protected BooleanInstance createBooleanInstance(boolean value) {
+ BooleanInstance val = LayersFactory.eINSTANCE.createBooleanInstance();
+ val.setValue(value);
+ return val;
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetComputePropertyValueCommandReturnTrue() throws LayersException {
+
+ // Create a list of nested commands
+ EList<ComputePropertyValueCommand> nestedCommand = new BasicEList<ComputePropertyValueCommand>();
+ BooleanInstance val1 = createBooleanInstance(true);
+ nestedCommand.add(val1);
+ BooleanInstance val2 = createBooleanInstance(true);
+ nestedCommand.add(val2);
+ BooleanInstance val3 = createBooleanInstance(true);
+ nestedCommand.add(val3);
+
+
+ // Create the command
+ BooleanAndOperator op = new BooleanAndOperator();
+ assertNotNull("command created", op.getComputePropertyValueCommand(nestedCommand));
+
+ assertSame("return the right value", true, ((BooleanInstance)op.getComputePropertyValueCommand(nestedCommand).getCmdValue()).isValue());
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetComputePropertyValueCommandReturnFalse() throws LayersException {
+
+ // Create a list of nested commands
+ EList<ComputePropertyValueCommand> nestedCommand = new BasicEList<ComputePropertyValueCommand>();
+ BooleanInstance val1 = createBooleanInstance(true);
+ nestedCommand.add(val1);
+ BooleanInstance val2 = createBooleanInstance(false);
+ nestedCommand.add(val2);
+ BooleanInstance val3 = createBooleanInstance(true);
+ nestedCommand.add(val3);
+
+
+ // Create the command
+ BooleanAndOperator op = new BooleanAndOperator();
+ assertNotNull("command created", op.getComputePropertyValueCommand(nestedCommand));
+
+ assertSame("return the right value", false, ((BooleanInstance)op.getComputePropertyValueCommand(nestedCommand).getCmdValue()).isValue());
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperatorTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperatorTest.java
new file mode 100644
index 00000000000..f6e3e207022
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperatorTest.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanOrOperatorTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Create an instance of boolean value cmd.
+ * @param b
+ * @return
+ */
+ protected BooleanInstance createBooleanInstance(boolean value) {
+ BooleanInstance val = LayersFactory.eINSTANCE.createBooleanInstance();
+ val.setValue(value);
+ return val;
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetComputePropertyValueCommandReturnTrue() throws LayersException {
+
+ // Create a list of nested commands
+ EList<ComputePropertyValueCommand> nestedCommand = new BasicEList<ComputePropertyValueCommand>();
+ BooleanInstance val1 = createBooleanInstance(false);
+ nestedCommand.add(val1);
+ BooleanInstance val2 = createBooleanInstance(true);
+ nestedCommand.add(val2);
+ BooleanInstance val3 = createBooleanInstance(false);
+ nestedCommand.add(val3);
+
+
+ // Create the command
+ BooleanOrOperator op = new BooleanOrOperator();
+ assertNotNull("command created", op.getComputePropertyValueCommand(nestedCommand));
+
+ assertSame("return the right value", true, ((BooleanInstance)op.getComputePropertyValueCommand(nestedCommand).getCmdValue()).isValue());
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+ * @throws LayersException
+ */
+ @Test
+ public void testGetComputePropertyValueCommandReturnFalse() throws LayersException {
+
+ // Create a list of nested commands
+ EList<ComputePropertyValueCommand> nestedCommand = new BasicEList<ComputePropertyValueCommand>();
+ BooleanInstance val1 = createBooleanInstance(false);
+ nestedCommand.add(val1);
+ BooleanInstance val2 = createBooleanInstance(false);
+ nestedCommand.add(val2);
+ BooleanInstance val3 = createBooleanInstance(false);
+ nestedCommand.add(val3);
+
+
+ // Create the command
+ BooleanOrOperator op = new BooleanOrOperator();
+ assertNotNull("command created", op.getComputePropertyValueCommand(nestedCommand));
+
+ assertSame("return the right value", false, ((BooleanInstance)op.getComputePropertyValueCommand(nestedCommand).getCmdValue()).isValue());
+
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/FakePropertyOperator.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/FakePropertyOperator.java
new file mode 100644
index 00000000000..85dad576365
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/FakePropertyOperator.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+
+/**
+ * A fake custom operator for tests purpose.
+ * @author cedric dumoulin
+ *
+ */
+public class FakePropertyOperator implements CustomPropertyOperatorsInstance {
+
+ public boolean isComputePropertyValueCommandCalled = false;
+ /**
+ * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+ *
+ * @param property
+ * @return
+ * @throws LayersException
+ */
+ @Override
+ public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException {
+ // TODO Auto-generated method stub
+ isComputePropertyValueCommandCalled = true;
+ return null;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizerTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizerTest.java
new file mode 100644
index 00000000000..27e473cd936
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizerTest.java
@@ -0,0 +1,173 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.uml2.uml.Class;
+
+import com.google.common.collect.Lists;
+
+/**
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewToListSynchronizerTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.DiagramViewToListSynchronizer#DiagramViewToListSynchronizer(org.eclipse.gmf.runtime.notation.Diagram, java.util.Collection)}.
+ */
+ @Test
+ public void testDiagramViewToListSynchronizer() {
+
+ // Create variables
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 =factory.newDiagram();
+
+ List<View> list = new ArrayList<View>();
+
+ //
+ DiagramViewToListSynchronizer listSynchronizer = new DiagramViewToListSynchronizer(diagram1, list);
+
+ // assert
+ assertNotNull("object created", listSynchronizer);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.DiagramViewToListSynchronizer#setDiagram(org.eclipse.gmf.runtime.notation.Diagram)}.
+ */
+ @Test
+ public void testSetDiagram() {
+ // Create variables
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 =factory.newDiagram();
+ Class C1 = factory.newClass(diagram1, "C1");
+ View shape1 = factory.lookupViewFor(diagram1, C1);
+ Class C2 = factory.newClass(diagram1, "C2");
+ View shape2 = factory.lookupViewFor(diagram1, C2);
+ Class C3 = factory.newClass(diagram1, "C3");
+ View shape3 = factory.lookupViewFor(diagram1, C3);
+
+ List<View> expectedViews1 = Lists.newArrayList(shape1, shape2, shape3);
+
+ // Check if the list is set on init
+ List<View> list = new ArrayList<View>();
+ DiagramViewToListSynchronizer listSynchronizer = new DiagramViewToListSynchronizer(diagram1, list);
+ int expectedSize = 3;
+ // Assert
+ assertEquals("list size", expectedSize, list.size());
+ assertTrue("list correctly set", list.containsAll(expectedViews1) );
+
+
+ // Now, change the diagram
+ Diagram diagram2 =factory.newDiagram();
+ Class C21 = factory.newClass(diagram2, "C1");
+ View shape21 = factory.lookupViewFor(diagram2, C21);
+ Class C22 = factory.newClass(diagram2, "C2");
+ View shape22 = factory.lookupViewFor(diagram2, C22);
+ Class C23 = factory.newClass(diagram2, "C3");
+ View shape23 = factory.lookupViewFor(diagram2, C23);
+ List<View> expectedViews2 = Lists.newArrayList(shape21, shape22, shape23);
+ int expectedSize2 = 3;
+
+
+ // Action
+ listSynchronizer.setDiagram(diagram2);
+ // Assert
+ assertEquals("list size", expectedSize2, list.size());
+ assertTrue("list correctly set", list.containsAll(expectedViews2) );
+ }
+
+ /**
+ * Test list sync
+ */
+ @Test
+ public void testSyncWhenViewIsAdded() {
+
+ // Create variables
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 =factory.newDiagram();
+
+ int expectedSize = 1;
+ List<View> list = new ArrayList<View>();
+ DiagramViewToListSynchronizer listSynchronizer = new DiagramViewToListSynchronizer(diagram1, list);
+ // Action
+ Class C1 = factory.newClass(diagram1, "C1");
+ View shape1 = factory.lookupViewFor(diagram1, C1);
+
+ // assert
+ assertEquals("listSize", expectedSize, list.size());
+ assertTrue("list contain expected view", list.contains(shape1));
+ }
+
+ /**
+ * Test list sync
+ */
+ @Test
+ public void testSyncWhenViewIsRemoved() {
+
+ // Create variables
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+ Diagram diagram1 =factory.newDiagram();
+
+ int expectedSize = 3;
+ List<View> list = new ArrayList<View>();
+ DiagramViewToListSynchronizer listSynchronizer = new DiagramViewToListSynchronizer(diagram1, list);
+
+ Class C1 = factory.newClass(diagram1, "C1");
+ View shape1 = factory.lookupViewFor(diagram1, C1);
+ Class C2 = factory.newClass(diagram1, "C2");
+ View shape2 = factory.lookupViewFor(diagram1, C2);
+ Class C3 = factory.newClass(diagram1, "C3");
+ View shape3 = factory.lookupViewFor(diagram1, C3);
+
+ // assert before
+ assertEquals("listSize", expectedSize, list.size());
+ assertTrue("list contain expected view", list.contains(shape2));
+
+ // Action
+ factory.remove(diagram1, C2);
+ // assert
+ assertEquals("listSize", expectedSize-1, list.size());
+ assertFalse("list contain expected view", list.contains(shape2));
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java
new file mode 100644
index 00000000000..b9fa49ebb0e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java
@@ -0,0 +1,41 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import com.google.common.eventbus.Subscribe;
+
+/**
+ * A class listening on events, and recording them.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class FakeObservableListListener<E> {
+
+ /**
+ * Trace object tracking events
+ */
+ public TriggeredEventTraces<ObservableListView<E>.ObservableListEvent> traces = new TriggeredEventTraces<ObservableListView<E>.ObservableListEvent>();
+
+
+ /**
+ * Method listeneing to the list event.
+ * @param event
+ */
+ @Subscribe
+ public void elementAddedToList(ObservableListView<E>.ObservableListEvent event) {
+ traces.addTrace("elementAddedToList", event);
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactory.java
new file mode 100644
index 00000000000..3941d01dc5c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactory.java
@@ -0,0 +1,135 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLFactory;
+
+/**
+ * A factory allowing to create Diagram and UML elements for testing purpose.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationAndUmlModelsFactory {
+
+
+ /**
+ * Create a Diagram
+ * @return
+ */
+ public Diagram newDiagram() {
+
+ Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+ return diagram;
+ }
+
+ /**
+ * Create a {@link Class} in the {@link Diagram}. Also create intermediate elements like
+ * {@link Shape}.
+ *
+ * @param name
+ * @return
+ */
+ public Class newClass( String name) {
+
+ Class c = UMLFactory.eINSTANCE.createClass();
+ c.setName(name);
+ return c;
+ }
+
+ /**
+ * Create a {@link Class} in the {@link Diagram}. Also create intermediate elements like
+ * {@link Shape}.
+ *
+ * @param diagram
+ * @param name
+ * @return
+ */
+ public Class newClass( Diagram diagram, String name) {
+
+ Class c = UMLFactory.eINSTANCE.createClass();
+ c.setName(name);
+
+ Shape shape = (Shape)diagram.createChild(NotationPackage.eINSTANCE.getShape());
+ shape.setElement(c);
+
+ return c;
+ }
+
+ /**
+ *
+ * @param name
+ * @return
+ */
+ public Property newProperty( String name) {
+ Property c = UMLFactory.eINSTANCE.createProperty();
+ c.setName(name);
+ return c;
+ }
+
+ /**
+ *
+ * @param name
+ * @return
+ */
+ public Property newProperty( Class c, String name) {
+ return c.createOwnedAttribute(name, null);
+ }
+
+ /**
+ * Lookup the View owning the specified {@link NamedElement}.
+ * return null if not found.
+ *
+ * @param diagram1
+ * @param element
+ * @return
+ */
+ public View lookupViewFor(Diagram diagram1, NamedElement element) {
+
+
+ for( Object o : diagram1.getChildren()) {
+ View view = (View)o;
+ if( view.getElement() == element) {
+ return view;
+ }
+ }
+ // not found
+ return null;
+ }
+
+ /**
+ * Remove the specified element and its associated View.
+ * @param element element to remove.
+ * @return The associated view.
+ */
+ public View remove(Diagram diagram, NamedElement element) {
+ View view = lookupViewFor(diagram, element);
+ if( view == null) {
+ return null;
+ }
+
+ diagram.removeChild(view);
+ return view;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactoryTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactoryTest.java
new file mode 100644
index 00000000000..98b29284e19
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactoryTest.java
@@ -0,0 +1,137 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationAndUmlModelsFactoryTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory#newDiagram()}.
+ */
+ @Test
+ public void testNotationAndUmlModelsTestUtils() {
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+ assertNotNull("object created", factory);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory#newDiagram()}.
+ */
+ @Test
+ public void testNewDiagram() {
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+ Diagram diagram1 =factory.newDiagram();
+
+ assertNotNull("diagram1 created", diagram1);
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory#newClass(org.eclipse.gmf.runtime.notation.Diagram, java.lang.String)}.
+ */
+ @Test
+ public void testNewClass() {
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+ // Action
+ Diagram diagram1 =factory.newDiagram();
+ Class c1 = factory.newClass(diagram1, "C1");
+ Class c2 = factory.newClass(diagram1, "C2");
+
+ // Lookup Shape
+ View shape1 = factory.lookupViewFor(diagram1, c1);
+ View shape2 = factory.lookupViewFor(diagram1, c2);
+
+ // Assert
+ assertNotNull("class created", c1);
+ assertNotNull("shape created", shape2);
+ assertNotNull("shape created", shape1);
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory#remove(org.eclipse.gmf.runtime.notation.Diagram, java.lang.String)}.
+ */
+ @Test
+ public void testRemove() {
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+ Diagram diagram1 =factory.newDiagram();
+ Class c1 = factory.newClass(diagram1, "C1");
+ Class c2 = factory.newClass(diagram1, "C2");
+
+ // Lookup Shape
+ View shape1 = factory.lookupViewFor(diagram1, c1);
+ View shape2 = factory.lookupViewFor(diagram1, c2);
+
+ // Action
+ View removedShape = factory.remove(diagram1, c1);
+ View lookupResult = factory.lookupViewFor(diagram1, c1);
+
+ // Assert
+ assertNotNull("object removed found", removedShape);
+ assertSame("Right object removed", shape1, removedShape);
+
+ assertNull("lookupResult null after remove", lookupResult);
+
+ }
+
+ /**
+ * Test
+ */
+ @Test
+ public void testNewProperty() {
+ NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+ Diagram diagram1 =factory.newDiagram();
+ Class c1 = factory.newClass(diagram1, "C1");
+ Property p1 = factory.newProperty(c1, "p1");
+
+ assertNotNull("property created", p1);
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java
new file mode 100644
index 00000000000..f27d9bdc95b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java
@@ -0,0 +1,447 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import static org.junit.Assert.*;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ObservableListTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#ObservableList(java.util.List)}.
+ */
+ @Test
+ public void testObservableList() {
+
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ assertNotNull("Object created", notyfyingList);
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#delegate()}.
+ */
+ @Test
+ public void testDelegate() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ assertSame("delegate is set", list, notyfyingList.delegate() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#getEventBus()}.
+ */
+ @Test
+ public void testGetEventBus() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ assertNotNull("eventBus found", notyfyingList.getEventBus() );
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#add(java.lang.Object)}.
+ */
+ @Test
+ public void testAddE() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+ String addedElement = "purple";
+ int listSizeBefore = list.size();
+ int expectedListSizeAfter = listSizeBefore+1;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.add(addedElement);
+
+ // Assertions
+ assertSame("event propagated", 1, notifyingListListener.traces.size());
+ assertTrue("event addedElement is correct", notifyingListListener.traces.get(0).notifier.getAddedElements().contains(addedElement));
+
+ Collection<? extends String> eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements();
+ assertEquals("event elements size", 1 , eventAddedElements.size());
+
+ assertEquals("result list size", expectedListSizeAfter , notyfyingList.size());
+ assertEquals("result list size", expectedListSizeAfter , list.size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#addAll(java.util.Collection)}.
+ */
+ @Test
+ public void testAddAllCollectionOfQextendsE() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow");
+ List<String> addedElements = Lists.newArrayList( "green", "blue", "purple");
+ int listSizeBefore = list.size();
+ int expectedListSizeAfter = listSizeBefore+addedElements.size();
+
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.addAll(addedElements);
+
+ assertSame("event propagated", 1, notifyingListListener.traces.size());
+
+ Collection<? extends String> eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements();
+ assertEquals("event elements size", addedElements.size() , eventAddedElements.size());
+
+ assertEquals("result list size", expectedListSizeAfter , notyfyingList.size());
+ assertEquals("result list size", expectedListSizeAfter , list.size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#add(int, java.lang.Object)}.
+ */
+ @Test
+ public void testAddIntE() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+ String addedElement = "purple";
+ int listSizeBefore = list.size();
+ int expectedListSizeAfter = listSizeBefore+1;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.add(3, addedElement);
+
+ // Assertions
+ assertSame("event propagated", 1, notifyingListListener.traces.size());
+ assertTrue("event addedElement is correct", notifyingListListener.traces.get(0).notifier.getAddedElements().contains(addedElement));
+
+ Collection<? extends String> eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements();
+ assertEquals("event elements size", 1 , eventAddedElements.size());
+
+ assertEquals("result list size", expectedListSizeAfter , notyfyingList.size());
+ assertEquals("result list size", expectedListSizeAfter , list.size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#addAll(int, java.util.Collection)}.
+ */
+ @Test
+ public void testAddAllIntCollectionOfQextendsE() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow");
+ List<String> addedElements = Lists.newArrayList( "green", "blue", "purple");
+ int listSizeBefore = list.size();
+ int expectedListSizeAfter = listSizeBefore+addedElements.size();
+
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.addAll(2, addedElements);
+
+ assertSame("event propagated", 1, notifyingListListener.traces.size());
+
+ Collection<? extends String> eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements();
+ assertEquals("event elements size", addedElements.size() , eventAddedElements.size());
+
+ assertEquals("result list size", expectedListSizeAfter , notyfyingList.size());
+ assertEquals("result list size", expectedListSizeAfter , list.size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#remove(int)}.
+ */
+ @Test
+ public void testRemoveInt() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+ String removedElement = "purple";
+ int listSizeBefore = list.size();
+ int expectedListSizeAfter = listSizeBefore-1;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.remove( removedElement);
+
+ // Assertions
+ assertSame("event propagated", 1, notifyingListListener.traces.size());
+ ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+ assertTrue("event removesElement is correct", event.getRemovedElements().contains(removedElement));
+
+ assertEquals("addedElement size", 0, event.getAddedElements().size() );
+ assertEquals("removedElement size", 1, event.getRemovedElements().size() );
+
+ assertEquals("result list size", expectedListSizeAfter , notyfyingList.size());
+ assertEquals("result list size", expectedListSizeAfter , list.size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#remove(java.lang.Object)}.
+ */
+ @Test
+ public void testRemoveObject() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+ int removedIndex = 3;
+ String removedElement = list.get(removedIndex);
+ int listSizeBefore = list.size();
+ int expectedListSizeAfter = listSizeBefore-1;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.remove( removedIndex);
+
+ // Assertions
+ assertSame("event propagated", 1, notifyingListListener.traces.size());
+ ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+ assertTrue("event removesElement is correct", event.getRemovedElements().contains(removedElement));
+
+ assertEquals("addedElement size", 0, event.getAddedElements().size() );
+ assertEquals("removedElement size", 1, event.getRemovedElements().size() );
+
+ assertEquals("result list size", expectedListSizeAfter , notyfyingList.size());
+ assertEquals("result list size", expectedListSizeAfter , list.size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#removeAll(java.util.Collection)}.
+ */
+ @Test
+ public void testRemoveAllCollectionOfQ() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+ List<String> elementsToRemove = Lists.newArrayList( "orange", "green", "purple");
+ int listSizeBefore = list.size();
+ int removedElementsCount = elementsToRemove.size();
+ int expectedListSizeAfter = listSizeBefore-removedElementsCount;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.removeAll( elementsToRemove);
+
+ // Assertions
+ assertSame("event propagated", 1, notifyingListListener.traces.size());
+
+ ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+ assertTrue("event removesElement is correct", event.getRemovedElements().containsAll(elementsToRemove));
+
+ assertEquals("addedElement size", 0, event.getAddedElements().size() );
+ assertEquals("removedElement size", removedElementsCount, event.getRemovedElements().size() );
+
+ assertEquals("result list size", expectedListSizeAfter , notyfyingList.size());
+ assertEquals("result list size", expectedListSizeAfter , list.size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#removeAll(java.util.Collection)}.
+ */
+ @Test
+ public void testRemoveAllCollectionOfQWithTooMuchElements() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+ List<String> elementsToRemove = Lists.newArrayList( "orange", "falseColor1", "green", "purple", "falseColor");
+ int listSizeBefore = list.size();
+ int removedElementsCount = elementsToRemove.size()-2; // 2 = falseColors
+ int expectedListSizeAfter = listSizeBefore-removedElementsCount;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.removeAll( elementsToRemove);
+
+ // Assertions
+ assertSame("event propagated", 1, notifyingListListener.traces.size());
+
+ ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+// assertTrue("event removesElement is correct", event.getRemovedElements().containsAll(elementsToRemove));
+ assertTrue("removed elements are from the required list", elementsToRemove.containsAll(event.getRemovedElements()));
+
+ assertEquals("addedElement size", 0, event.getAddedElements().size() );
+ assertEquals("removedElement size", removedElementsCount, event.getRemovedElements().size() );
+
+ assertEquals("result list size", expectedListSizeAfter , notyfyingList.size());
+ assertEquals("result list size", expectedListSizeAfter , list.size());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}.
+ */
+ @Test
+ public void testResetTo() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+
+ List<String> listToReset = Lists.newArrayList( "orange", "green", "purple", "falseColor");
+ List<String> expectedRemovedElement = Lists.newArrayList( "red", "yellow", "blue");
+ List<String> expectedAddedElement = Lists.newArrayList( "falseColor");
+
+ int expectedEventCount = 1;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.resetTo(listToReset);
+
+ // Assertions
+ assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+ assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray());
+
+ ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+ assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray());
+ assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}.
+ */
+ @Test
+ public void testResetToNoAdded() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+
+ List<String> listToReset = Lists.newArrayList( "orange", "green", "purple");
+ List<String> expectedRemovedElement = Lists.newArrayList( "red", "yellow", "blue");
+ List<String> expectedAddedElement = Collections.emptyList();
+
+ int expectedEventCount = 1;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.resetTo(listToReset);
+
+ // Assertions
+ assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+ assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray());
+
+ ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+ assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray());
+ assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}.
+ */
+ @Test
+ public void testResetToWithAddition() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+
+ List<String> listToReset = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple", "falseColor");
+ List<String> expectedRemovedElement = Collections.emptyList();
+ List<String> expectedAddedElement = Lists.newArrayList( "falseColor");
+
+ int expectedEventCount = 1;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.resetTo(listToReset);
+
+ // Assertions
+ assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+ assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray());
+
+ ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+ assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray());
+ assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}.
+ */
+ @Test
+ public void testResetToNoChanges() {
+ List<String> list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+
+ List<String> listToReset = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple");
+ List<String> expectedRemovedElement = Collections.emptyList();
+ List<String> expectedAddedElement = Collections.emptyList();
+
+ // No change, no events
+ int expectedEventCount = 0;
+
+ FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+ ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+ notyfyingList.getEventBus().register(notifyingListListener );
+
+ // Action
+ notyfyingList.resetTo(listToReset);
+
+ // Assertions
+ assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+ assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray());
+
+// ObservableList<String>.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier;
+// assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray());
+// assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray());
+ }
+
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/TriggeredEventTraces.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/TriggeredEventTraces.java
new file mode 100644
index 00000000000..9d17708bdd5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/TriggeredEventTraces.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * This class is used to record a list of traces.
+ * Traces are for event triggered by a method.
+ * This class is for tests purpose.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TriggeredEventTraces<E> {
+
+
+ /**
+ * List of recorded events
+ */
+ public List<TriggeredEvent> traces = new ArrayList<TriggeredEvent>();
+
+ /**
+ * Clear all traces.
+ */
+ public void clear() {
+ traces.clear();
+ }
+
+ /**
+ * Add a trace to the list of traces
+ * @param name
+ * @param notification
+ */
+ public void addTrace(String name, E notification) {
+ traces.add(new TriggeredEvent(name, notification));
+ }
+
+ /**
+ * Return true if one of the trace has the specified name.
+ * @param name
+ * @return
+ */
+ public boolean contains(String name) {
+ if( name == null)
+ return false;
+
+ for(TriggeredEvent event : traces) {
+ if(name.equals(event.name))
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Return true if one of the trace has the specified name.
+ * @param name Name of the event to found
+ * @return the first event with the specified name, or null if nothing is found.
+ */
+ public TriggeredEvent getFirstEvent(String name) {
+ if( name == null)
+ return null;
+
+ for(TriggeredEvent event : traces) {
+ if(name.equals(event.name))
+ return event;
+ }
+ return null;
+ }
+
+
+ /**
+ * A record of an event
+ *
+ */
+ public class TriggeredEvent {
+ public String name;
+ public E notifier;
+ public Object object;
+ /**
+ * Constructor.
+ *
+ * @param name
+ * @param notifier
+ */
+ public TriggeredEvent(String name, E notifier) {
+ this.name = name;
+ this.notifier = notifier;
+ }
+ /**
+ * Constructor.
+ *
+ * @param name
+ * @param object
+ */
+ public TriggeredEvent(String name, E notifier, Object object) {
+ this.name = name;
+ this.notifier = notifier;
+ this.object = object;
+ }
+
+ }
+
+
+ /**
+ * Return the number of traces
+ * @return
+ */
+ public int size() {
+ return traces.size();
+ }
+
+ /**
+ * Get the specified trace.
+ * @param i
+ * @return
+ */
+ public TriggeredEvent get(int index) {
+ return traces.get(index);
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/.classpath b/extraplugins/layers/org.eclipse.papyrus.layers.ui/.classpath
new file mode 100644
index 00000000000..ad32c83a788
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/.project b/extraplugins/layers/org.eclipse.papyrus.layers.ui/.project
new file mode 100644
index 00000000000..eef59ef7305
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.ui</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/extraplugins/layers/org.eclipse.papyrus.layers.ui/META-INF/MANIFEST.MF b/extraplugins/layers/org.eclipse.papyrus.layers.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..39118cf72a3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,42 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.layers.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.layers.ui.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.infra.core.sasheditor;bundle-version="0.10.0",
+ org.eclipse.ui.forms;bundle-version="3.5.200",
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.7.0",
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.papyrus.infra.core;bundle-version="1.0.0",
+ org.eclipse.papyrus.layers.runtime;bundle-version="1.0.0",
+ org.eclipse.core.databinding,
+ org.eclipse.core.databinding.beans,
+ org.eclipse.core.databinding.observable,
+ org.eclipse.core.databinding.property,
+ com.ibm.icu,
+ org.eclipse.emf.databinding,
+ org.eclipse.uml2.uml;bundle-version="4.1.0",
+ org.eclipse.uml2.uml.edit;bundle-version="4.0.100",
+ org.eclipse.emf.databinding.edit;bundle-version="1.3.0",
+ org.eclipse.jface.databinding;bundle-version="1.6.200",
+ org.eclipse.gmf.runtime.diagram.ui.properties,
+ org.eclipse.ui.ide;bundle-version="3.9.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.0.0",
+ org.eclipse.gmf.runtime.diagram.ui.resources.editor;bundle-version="1.7.0",
+ org.eclipse.core.expressions;bundle-version="3.4.500",
+ org.eclipse.papyrus.layers.stackmodel;bundle-version="1.0.0",
+ org.eclipse.papyrus.layers.notationmodel.edit;bundle-version="1.0.0",
+ org.eclipse.papyrus.views.modelexplorer;bundle-version="1.0.0",
+ org.eclipse.papyrus.views.properties;bundle-version="1.0.0",
+ org.eclipse.papyrus.infra.widgets;bundle-version="0.10.0",
+ org.eclipse.ui.navigator;bundle-version="3.5.300",
+ org.eclipse.gmf.runtime.notation.edit;bundle-version="1.7.0",
+ org.eclipse.papyrus.infra.services.labelprovider;bundle-version="1.0.0",
+ org.eclipse.papyrus.infra.gmfdiag.hyperlink;bundle-version="0.10.1"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-Vendor: %providerName
+Import-Package: org.eclipse.papyrus.layers.stackmodel.layers.provider.custom
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/about.html b/extraplugins/layers/org.eclipse.papyrus.layers.ui/about.html
new file mode 100644
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/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/extraplugins/layers/org.eclipse.papyrus.layers.ui/build.properties b/extraplugins/layers/org.eclipse.papyrus.layers.ui/build.properties
new file mode 100644
index 00000000000..5ce37f2d895
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/build.properties
@@ -0,0 +1,22 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ icons/,\
+ about.html,\
+ bin/,\
+ plugin.properties,\
+ plugin.xml,\
+ properties/
+jars.compile.order = .
+src.includes = META-INF/,\
+ build.properties,\
+ icons/,\
+ plugin.xml,\
+ src/,\
+ .project,\
+ .classpath,\
+ .settings/,\
+ about.html,\
+ plugin.properties,\
+ properties/
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/LayersStackApplication.gif b/extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/LayersStackApplication.gif
new file mode 100644
index 00000000000..b4ac2ec7108
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/LayersStackApplication.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/icon_delete.png b/extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/icon_delete.png
new file mode 100644
index 00000000000..4991d87d67d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/icon_delete.png
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/layers.gif b/extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/layers.gif
new file mode 100644
index 00000000000..34fb3c9d8cb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/icons/layers.gif
Binary files differ
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/plugin.properties b/extraplugins/layers/org.eclipse.papyrus.layers.ui/plugin.properties
new file mode 100644
index 00000000000..45694f293ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2013 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:
+# Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers UI (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/plugin.xml b/extraplugins/layers/org.eclipse.papyrus.layers.ui/plugin.xml
new file mode 100644
index 00000000000..dcb592311f6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/plugin.xml
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ category="org.eclipse.papyrus.views.category"
+ class="org.eclipse.papyrus.layers3.ui.view.LayersExplorerView"
+ icon="icons/LayersStackApplication.gif"
+ id="org.eclipse.papyrus.layers.ui.view.layersexplorer"
+ name="LayersExplorer"
+ restorable="true">
+ </view>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="toolbar:org.eclipse.ui.main.toolbar">
+ <toolbar
+ id="org.eclipse.papyrus.diagram.ui.toolbar">
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.selectAssociatedElement"
+ label="Select Associated Elements"
+ style="push"
+ tooltip="Select all elements associated to the current layer">
+ </command>
+ </toolbar>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.delete"
+ name="Delete">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.createlayer"
+ name="Create Layer">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.createregexplayer"
+ name="Create RegExp Layer">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.createtoplayeroperator"
+ name="Create Top Layer Operator">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.createstackedLayerOperator"
+ name="Create Stacked Layer Operator">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.attachPropertyToLayer"
+ name="Attach a Property to a Layer">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.attachPropertiesToLayer"
+ name="Attach Properties to a Layer">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.attachDiagramViewsToLayer"
+ name="Attach Multiple Diagram Views to a Layer">
+ </command>
+ <command
+ defaultHandler="org.eclipse.papyrus.layers3.ui.commands.CreateLayerOperatorsFromParameter"
+ id="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+ name="Create LayerOperators">
+ <commandParameter
+ id="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+ name="name"
+ optional="true"
+ values="org.eclipse.papyrus.layers3.ui.commands.LayerOperatorsParameterValues">
+ </commandParameter>
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.openlayersexplorerview"
+ name="Open Layers Explorer">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.attachitemselectedindiagramtocurrentlayer"
+ name="Attach Views to Current Layer">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.removeitemselectedindiagramfromcurrentlayer"
+ name="Remove Views from Current Layer">
+ </command>
+ <command
+ id="org.eclipse.papyrus.layers.ui.commands.createallviewsderivedlayer"
+ name="Create All View Derived Layer">
+ </command>
+ </extension>
+ <extension
+ name="Layers v3"
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.AttachLayerStackCommand"
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachLayerStack">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.DetachLayerStackCommand"
+ commandId="org.eclipse.papyrus.layers.ui.commands.detachLayerStack">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.CreateLayerHandler"
+ commandId="org.eclipse.papyrus.layers.ui.commands.createlayer">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.CreateRegExpLayerHandler"
+ commandId="org.eclipse.papyrus.layers.ui.commands.createregexplayer">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.CreateTopLayerOperatorHandler"
+ commandId="org.eclipse.papyrus.layers.ui.commands.createtoplayeroperator">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.CreateStackedLayerOperatorHandler"
+ commandId="org.eclipse.papyrus.layers.ui.commands.createstackedLayerOperator">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.AttachPropertyToLayer"
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachPropertyToLayer">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.AttachPropertyFromListToLayer"
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachPropertiesToLayer">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.AttachDiagramViewsToLayer"
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachDiagramViewsToLayer">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.commands.DeleteItemHandler"
+ commandId="org.eclipse.papyrus.layers.ui.commands.delete">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.handlers.OpenLayerExplorerHandler"
+ commandId="org.eclipse.papyrus.layers.ui.commands.openlayersexplorerview">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.handlers.AttachDiagramSelectedItemsToCurrentLayer"
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachitemselectedindiagramtocurrentlayer">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.handlers.RemoveDiagramSelectedItemsFromCurrentLayer"
+ commandId="org.eclipse.papyrus.layers.ui.commands.removeitemselectedindiagramfromcurrentlayer">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.layers3.ui.handlers.CreateAllViewsDerivedLayerHandler"
+ commandId="org.eclipse.papyrus.layers.ui.commands.createallviewsderivedlayer">
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="menu:org.eclipse.papyrus.ui.menu">
+ <menu
+ label="Layers">
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachLayerStack"
+ label="Attach Layer Stack"
+ style="push"
+ tooltip="Attach a Layer Stack to the diagram">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.detachLayerStack"
+ label="Detach Layer Stack"
+ style="push"
+ tooltip="Detach a Layer Stack to the diagram">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.openlayersexplorerview"
+ label="Open Layers Explorer"
+ style="push"
+ tooltip="Open the Layers Explorer View">
+ </command>
+ </menu>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.layers.stackmodel.ui.popupmenu">
+ <menu
+ label="Create Layers ..."
+ tooltip="Create a new leaf layers">
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createlayer"
+ label="Create Layer"
+ style="push"
+ tooltip="Create a new Layer in selected parent">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createregexplayer"
+ label="Create RegExp Layer"
+ style="push"
+ tooltip="Create a RegExp Layer">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createallviewsderivedlayer"
+ label="Create AllViews Layer"
+ style="push"
+ tooltip="Create a All Views Derived Layer">
+ </command>
+ </menu>
+ <menu
+ commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+ id="org.eclipse.papyrus.layers.explorer.contextmenu.operators"
+ label="Create Operators ..."
+ tooltip="Create a new layer operators">
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+ label="Create Stacked Layers"
+ style="push"
+ tooltip="Create a new Stacked Layers Operator">
+ <parameter
+ name="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+ value="stackedLayersOperator">
+ </parameter>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createtoplayeroperator"
+ label="Create Top Layers"
+ style="push"
+ tooltip="Create a new Top Layers Operator">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+ label="Create Minimum Stacked Layers"
+ style="push"
+ tooltip="Create a new Stacked Layers with Operators of type &apos;Minimum&apos; ">
+ <parameter
+ name="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+ value="stackedLayersOperatorMinimum">
+ </parameter>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+ label="Create Maximum Stacked Layers"
+ style="push"
+ tooltip="Create a new Stacked Layers with Operators of type &apos;Maximum&apos; ">
+ <parameter
+ name="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+ value="stackedLayersOperatorMaximum">
+ </parameter>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+ label="Create Average Stacked Layers"
+ style="push"
+ tooltip="Create a new Stacked Layers with Operators of type &apos;Average&apos; ">
+ <parameter
+ name="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+ value="stackedLayersOperatorAverage">
+ </parameter>
+ </command>
+ </menu>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachPropertiesToLayer"
+ label="Attach Properties"
+ style="push"
+ tooltip="Attach Properties to a Layer">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachDiagramViewsToLayer"
+ label="Attach Views"
+ style="push"
+ tooltip="Attach Multiple Diagram Views to a Layer">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.delete"
+ icon="IMG_TOOL_DELETE"
+ label="Delete"
+ style="push"
+ tooltip="Delete Selected Item from the Layer Explorer">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachitemselectedindiagramtocurrentlayer"
+ label="Attach Selected Views to Layer"
+ style="push"
+ tooltip="Attach selected views to the layer selected in the LayersExplorer">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.removeitemselectedindiagramfromcurrentlayer"
+ label="Remove Selected Views from Layer"
+ style="push"
+ tooltip="Remove selected views from the layer selected in the LayersExplorer">
+ </command>
+ <separator
+ name="endseparator"
+ visible="false">
+ </separator>
+ </menuContribution>
+ <menuContribution
+ locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu">
+ <menu
+ label="Layers">
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachLayerStack"
+ label="Attach Layer Stack"
+ style="push"
+ tooltip="Attach a Layer Stack to the diagram">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.detachLayerStack"
+ label="Detach Layer Stack"
+ style="push"
+ tooltip="Detach a Layer Stack to the diagram">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.openlayersexplorerview"
+ label="Open Layers Explorer"
+ style="push"
+ tooltip="Open the Layers Explorer View">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.attachitemselectedindiagramtocurrentlayer"
+ label="Attach Views to Current Layer"
+ style="push"
+ tooltip="Attach selected views to the layer currently selected in the LayersExplorer">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.layers.ui.commands.removeitemselectedindiagramfromcurrentlayer"
+ label="Remove Views from Current Layer"
+ style="push"
+ tooltip="Remove selected views from the layer currently selected in the LayersExplorer">
+ </command>
+ </menu>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.views.properties.context">
+ <context
+ contextModel="properties/properties-orig.ctx"
+ isCustomizable="true">
+ </context>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-orig.ctx b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-orig.ctx
new file mode 100644
index 00000000000..fed41cf0ec6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-orig.ctx
@@ -0,0 +1,1306 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" name="layers">
+ <tabs label="layers" id="layers" category="org.eclipse.papyrus" priority="100">
+ <sections name="Single LayerNamedStyle" sectionFile="ui/SingleLayerNamedStyle.xwt">
+ <widget href="ui/SingleLayerNamedStyle.xwt#/"/>
+ </sections>
+ <sections name="Single LayersStack" sectionFile="ui/SingleLayersStack.xwt">
+ <widget href="ui/SingleLayersStack.xwt#/"/>
+ </sections>
+ <sections name="Single LayerExpression" sectionFile="ui/SingleLayerExpression.xwt">
+ <widget href="ui/SingleLayerExpression.xwt#/"/>
+ </sections>
+ <sections name="Single ApplicationDependantElement" sectionFile="ui/SingleApplicationDependantElement.xwt">
+ <widget href="ui/SingleApplicationDependantElement.xwt#/"/>
+ </sections>
+ <sections name="Single LayersStackApplication" sectionFile="ui/SingleLayersStackApplication.xwt">
+ <widget href="ui/SingleLayersStackApplication.xwt#/"/>
+ </sections>
+ <sections name="Single FolderElement" sectionFile="ui/SingleFolderElement.xwt">
+ <widget href="ui/SingleFolderElement.xwt#/"/>
+ </sections>
+ <sections name="Single LayerStackDescriptorRegistry" sectionFile="ui/SingleLayerStackDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerStackDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyRegistry" sectionFile="ui/SinglePropertyRegistry.xwt">
+ <widget href="ui/SinglePropertyRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single Property" sectionFile="ui/SingleProperty.xwt">
+ <widget href="ui/SingleProperty.xwt#/"/>
+ </sections>
+ <sections name="Single Type" sectionFile="ui/SingleType.xwt">
+ <widget href="ui/SingleType.xwt#/"/>
+ </sections>
+ <sections name="Single Metamodel" sectionFile="ui/SingleMetamodel.xwt">
+ <widget href="ui/SingleMetamodel.xwt#/"/>
+ </sections>
+ <sections name="Single TypeInstance" sectionFile="ui/SingleTypeInstance.xwt">
+ <widget href="ui/SingleTypeInstance.xwt#/"/>
+ </sections>
+ <sections name="Single ComputePropertyValueCommandItf" sectionFile="ui/SingleComputePropertyValueCommandItf.xwt">
+ <widget href="ui/SingleComputePropertyValueCommandItf.xwt#/"/>
+ </sections>
+ <sections name="Single TypeRegistry" sectionFile="ui/SingleTypeRegistry.xwt">
+ <widget href="ui/SingleTypeRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single StringToTypeMap" sectionFile="ui/SingleStringToTypeMap.xwt">
+ <widget href="ui/SingleStringToTypeMap.xwt#/"/>
+ </sections>
+ <sections name="Single LayerDescriptorRegistry" sectionFile="ui/SingleLayerDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single LayerDescriptor" sectionFile="ui/SingleLayerDescriptor.xwt">
+ <widget href="ui/SingleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single LayerApplicationFactory" sectionFile="ui/SingleLayerApplicationFactory.xwt">
+ <widget href="ui/SingleLayerApplicationFactory.xwt#/"/>
+ </sections>
+ <sections name="Single PropertySetterRegistry" sectionFile="ui/SinglePropertySetterRegistry.xwt">
+ <widget href="ui/SinglePropertySetterRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single PropertySetter" sectionFile="ui/SinglePropertySetter.xwt">
+ <widget href="ui/SinglePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single StringToPropertySetter" sectionFile="ui/SingleStringToPropertySetter.xwt">
+ <widget href="ui/SingleStringToPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single AbstractLayer" sectionFile="ui/SingleAbstractLayer.xwt">
+ <widget href="ui/SingleAbstractLayer.xwt#/"/>
+ </sections>
+ <sections name="Single StringToTypeInstanceMap" sectionFile="ui/SingleStringToTypeInstanceMap.xwt">
+ <widget href="ui/SingleStringToTypeInstanceMap.xwt#/"/>
+ </sections>
+ <sections name="Single Folder" sectionFile="ui/SingleFolder.xwt">
+ <widget href="ui/SingleFolder.xwt#/"/>
+ </sections>
+ <sections name="Single IntInstance" sectionFile="ui/SingleIntInstance.xwt">
+ <widget href="ui/SingleIntInstance.xwt#/"/>
+ </sections>
+ <sections name="Single BooleanInstance" sectionFile="ui/SingleBooleanInstance.xwt">
+ <widget href="ui/SingleBooleanInstance.xwt#/"/>
+ </sections>
+ <sections name="Single StringInstance" sectionFile="ui/SingleStringInstance.xwt">
+ <widget href="ui/SingleStringInstance.xwt#/"/>
+ </sections>
+ <sections name="Single IntType" sectionFile="ui/SingleIntType.xwt">
+ <widget href="ui/SingleIntType.xwt#/"/>
+ </sections>
+ <sections name="Single BooleanType" sectionFile="ui/SingleBooleanType.xwt">
+ <widget href="ui/SingleBooleanType.xwt#/"/>
+ </sections>
+ <sections name="Single StringType" sectionFile="ui/SingleStringType.xwt">
+ <widget href="ui/SingleStringType.xwt#/"/>
+ </sections>
+ <sections name="Single CustomType" sectionFile="ui/SingleCustomType.xwt">
+ <widget href="ui/SingleCustomType.xwt#/"/>
+ </sections>
+ <sections name="Single LayerOperator" sectionFile="ui/SingleLayerOperator.xwt">
+ <widget href="ui/SingleLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single AbstractLayerOperator" sectionFile="ui/SingleAbstractLayerOperator.xwt">
+ <widget href="ui/SingleAbstractLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single TopLayerOperator" sectionFile="ui/SingleTopLayerOperator.xwt">
+ <widget href="ui/SingleTopLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single StackedLayerOperator" sectionFile="ui/SingleStackedLayerOperator.xwt">
+ <widget href="ui/SingleStackedLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single CustomLayerOperator" sectionFile="ui/SingleCustomLayerOperator.xwt">
+ <widget href="ui/SingleCustomLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyIndex" sectionFile="ui/SinglePropertyIndex.xwt">
+ <widget href="ui/SinglePropertyIndex.xwt#/"/>
+ </sections>
+ <sections name="Single StringToPropertyIndexMap" sectionFile="ui/SingleStringToPropertyIndexMap.xwt">
+ <widget href="ui/SingleStringToPropertyIndexMap.xwt#/"/>
+ </sections>
+ <sections name="Single SimpleLayerDescriptor" sectionFile="ui/SingleSimpleLayerDescriptor.xwt">
+ <widget href="ui/SingleSimpleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single RegExpLayerDescriptor" sectionFile="ui/SingleRegExpLayerDescriptor.xwt">
+ <widget href="ui/SingleRegExpLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single NullInstance" sectionFile="ui/SingleNullInstance.xwt">
+ <widget href="ui/SingleNullInstance.xwt#/"/>
+ </sections>
+ <sections name="Single RegExpLayer" sectionFile="ui/SingleRegExpLayer.xwt">
+ <widget href="ui/SingleRegExpLayer.xwt#/"/>
+ </sections>
+ <sections name="Single Layer" sectionFile="ui/SingleLayer.xwt">
+ <widget href="ui/SingleLayer.xwt#/"/>
+ </sections>
+ <sections name="Single Color" sectionFile="ui/SingleColor.xwt">
+ <widget href="ui/SingleColor.xwt#/"/>
+ </sections>
+ <sections name="Single ColorInstance" sectionFile="ui/SingleColorInstance.xwt">
+ <widget href="ui/SingleColorInstance.xwt#/"/>
+ </sections>
+ <sections name="Single FillInstance" sectionFile="ui/SingleFillInstance.xwt">
+ <widget href="ui/SingleFillInstance.xwt#/"/>
+ </sections>
+ <sections name="Single Fill" sectionFile="ui/SingleFill.xwt">
+ <widget href="ui/SingleFill.xwt#/"/>
+ </sections>
+ <sections name="Single FillPropertySetter" sectionFile="ui/SingleFillPropertySetter.xwt">
+ <widget href="ui/SingleFillPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single IsValidPropertySetter" sectionFile="ui/SingleIsValidPropertySetter.xwt">
+ <widget href="ui/SingleIsValidPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single NullPropertySetter" sectionFile="ui/SingleNullPropertySetter.xwt">
+ <widget href="ui/SingleNullPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single LineType" sectionFile="ui/SingleLineType.xwt">
+ <widget href="ui/SingleLineType.xwt#/"/>
+ </sections>
+ <sections name="Single LineInstance" sectionFile="ui/SingleLineInstance.xwt">
+ <widget href="ui/SingleLineInstance.xwt#/"/>
+ </sections>
+ <sections name="Single LinePropertySetter" sectionFile="ui/SingleLinePropertySetter.xwt">
+ <widget href="ui/SingleLinePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single FontPropertySetter" sectionFile="ui/SingleFontPropertySetter.xwt">
+ <widget href="ui/SingleFontPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single FontInstance" sectionFile="ui/SingleFontInstance.xwt">
+ <widget href="ui/SingleFontInstance.xwt#/"/>
+ </sections>
+ <sections name="Single FontType" sectionFile="ui/SingleFontType.xwt">
+ <widget href="ui/SingleFontType.xwt#/"/>
+ </sections>
+ <sections name="Single IsVisiblePropertySetter" sectionFile="ui/SingleIsVisiblePropertySetter.xwt">
+ <widget href="ui/SingleIsVisiblePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerNamedStyle" sectionFile="ui/MultipleLayerNamedStyle.xwt">
+ <widget href="ui/MultipleLayerNamedStyle.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayersStack" sectionFile="ui/MultipleLayersStack.xwt">
+ <widget href="ui/MultipleLayersStack.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerExpression" sectionFile="ui/MultipleLayerExpression.xwt">
+ <widget href="ui/MultipleLayerExpression.xwt#/"/>
+ </sections>
+ <sections name="Multiple ApplicationDependantElement" sectionFile="ui/MultipleApplicationDependantElement.xwt">
+ <widget href="ui/MultipleApplicationDependantElement.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayersStackApplication" sectionFile="ui/MultipleLayersStackApplication.xwt">
+ <widget href="ui/MultipleLayersStackApplication.xwt#/"/>
+ </sections>
+ <sections name="Multiple FolderElement" sectionFile="ui/MultipleFolderElement.xwt">
+ <widget href="ui/MultipleFolderElement.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerStackDescriptorRegistry" sectionFile="ui/MultipleLayerStackDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerStackDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyRegistry" sectionFile="ui/MultiplePropertyRegistry.xwt">
+ <widget href="ui/MultiplePropertyRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple Property" sectionFile="ui/MultipleProperty.xwt">
+ <widget href="ui/MultipleProperty.xwt#/"/>
+ </sections>
+ <sections name="Multiple Type" sectionFile="ui/MultipleType.xwt">
+ <widget href="ui/MultipleType.xwt#/"/>
+ </sections>
+ <sections name="Multiple Metamodel" sectionFile="ui/MultipleMetamodel.xwt">
+ <widget href="ui/MultipleMetamodel.xwt#/"/>
+ </sections>
+ <sections name="Multiple TypeInstance" sectionFile="ui/MultipleTypeInstance.xwt">
+ <widget href="ui/MultipleTypeInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple ComputePropertyValueCommandItf" sectionFile="ui/MultipleComputePropertyValueCommandItf.xwt">
+ <widget href="ui/MultipleComputePropertyValueCommandItf.xwt#/"/>
+ </sections>
+ <sections name="Multiple TypeRegistry" sectionFile="ui/MultipleTypeRegistry.xwt">
+ <widget href="ui/MultipleTypeRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToTypeMap" sectionFile="ui/MultipleStringToTypeMap.xwt">
+ <widget href="ui/MultipleStringToTypeMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerDescriptorRegistry" sectionFile="ui/MultipleLayerDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerDescriptor" sectionFile="ui/MultipleLayerDescriptor.xwt">
+ <widget href="ui/MultipleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerApplicationFactory" sectionFile="ui/MultipleLayerApplicationFactory.xwt">
+ <widget href="ui/MultipleLayerApplicationFactory.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertySetterRegistry" sectionFile="ui/MultiplePropertySetterRegistry.xwt">
+ <widget href="ui/MultiplePropertySetterRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertySetter" sectionFile="ui/MultiplePropertySetter.xwt">
+ <widget href="ui/MultiplePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToPropertySetter" sectionFile="ui/MultipleStringToPropertySetter.xwt">
+ <widget href="ui/MultipleStringToPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple AbstractLayer" sectionFile="ui/MultipleAbstractLayer.xwt">
+ <widget href="ui/MultipleAbstractLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToTypeInstanceMap" sectionFile="ui/MultipleStringToTypeInstanceMap.xwt">
+ <widget href="ui/MultipleStringToTypeInstanceMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple Folder" sectionFile="ui/MultipleFolder.xwt">
+ <widget href="ui/MultipleFolder.xwt#/"/>
+ </sections>
+ <sections name="Multiple IntInstance" sectionFile="ui/MultipleIntInstance.xwt">
+ <widget href="ui/MultipleIntInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple BooleanInstance" sectionFile="ui/MultipleBooleanInstance.xwt">
+ <widget href="ui/MultipleBooleanInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringInstance" sectionFile="ui/MultipleStringInstance.xwt">
+ <widget href="ui/MultipleStringInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple IntType" sectionFile="ui/MultipleIntType.xwt">
+ <widget href="ui/MultipleIntType.xwt#/"/>
+ </sections>
+ <sections name="Multiple BooleanType" sectionFile="ui/MultipleBooleanType.xwt">
+ <widget href="ui/MultipleBooleanType.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringType" sectionFile="ui/MultipleStringType.xwt">
+ <widget href="ui/MultipleStringType.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomType" sectionFile="ui/MultipleCustomType.xwt">
+ <widget href="ui/MultipleCustomType.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerOperator" sectionFile="ui/MultipleLayerOperator.xwt">
+ <widget href="ui/MultipleLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple AbstractLayerOperator" sectionFile="ui/MultipleAbstractLayerOperator.xwt">
+ <widget href="ui/MultipleAbstractLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple TopLayerOperator" sectionFile="ui/MultipleTopLayerOperator.xwt">
+ <widget href="ui/MultipleTopLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple StackedLayerOperator" sectionFile="ui/MultipleStackedLayerOperator.xwt">
+ <widget href="ui/MultipleStackedLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomLayerOperator" sectionFile="ui/MultipleCustomLayerOperator.xwt">
+ <widget href="ui/MultipleCustomLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyIndex" sectionFile="ui/MultiplePropertyIndex.xwt">
+ <widget href="ui/MultiplePropertyIndex.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToPropertyIndexMap" sectionFile="ui/MultipleStringToPropertyIndexMap.xwt">
+ <widget href="ui/MultipleStringToPropertyIndexMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple SimpleLayerDescriptor" sectionFile="ui/MultipleSimpleLayerDescriptor.xwt">
+ <widget href="ui/MultipleSimpleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple RegExpLayerDescriptor" sectionFile="ui/MultipleRegExpLayerDescriptor.xwt">
+ <widget href="ui/MultipleRegExpLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple NullInstance" sectionFile="ui/MultipleNullInstance.xwt">
+ <widget href="ui/MultipleNullInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple RegExpLayer" sectionFile="ui/MultipleRegExpLayer.xwt">
+ <widget href="ui/MultipleRegExpLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple Layer" sectionFile="ui/MultipleLayer.xwt">
+ <widget href="ui/MultipleLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple Color" sectionFile="ui/MultipleColor.xwt">
+ <widget href="ui/MultipleColor.xwt#/"/>
+ </sections>
+ <sections name="Multiple ColorInstance" sectionFile="ui/MultipleColorInstance.xwt">
+ <widget href="ui/MultipleColorInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple FillInstance" sectionFile="ui/MultipleFillInstance.xwt">
+ <widget href="ui/MultipleFillInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple Fill" sectionFile="ui/MultipleFill.xwt">
+ <widget href="ui/MultipleFill.xwt#/"/>
+ </sections>
+ <sections name="Multiple FillPropertySetter" sectionFile="ui/MultipleFillPropertySetter.xwt">
+ <widget href="ui/MultipleFillPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsValidPropertySetter" sectionFile="ui/MultipleIsValidPropertySetter.xwt">
+ <widget href="ui/MultipleIsValidPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple NullPropertySetter" sectionFile="ui/MultipleNullPropertySetter.xwt">
+ <widget href="ui/MultipleNullPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LineType" sectionFile="ui/MultipleLineType.xwt">
+ <widget href="ui/MultipleLineType.xwt#/"/>
+ </sections>
+ <sections name="Multiple LineInstance" sectionFile="ui/MultipleLineInstance.xwt">
+ <widget href="ui/MultipleLineInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple LinePropertySetter" sectionFile="ui/MultipleLinePropertySetter.xwt">
+ <widget href="ui/MultipleLinePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontPropertySetter" sectionFile="ui/MultipleFontPropertySetter.xwt">
+ <widget href="ui/MultipleFontPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontInstance" sectionFile="ui/MultipleFontInstance.xwt">
+ <widget href="ui/MultipleFontInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontType" sectionFile="ui/MultipleFontType.xwt">
+ <widget href="ui/MultipleFontType.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsVisiblePropertySetter" sectionFile="ui/MultipleIsVisiblePropertySetter.xwt">
+ <widget href="ui/MultipleIsVisiblePropertySetter.xwt#/"/>
+ </sections>
+ </tabs>
+ <views name="Single LayerNamedStyle" sections="//@tabs.0/@sections.0" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerNamedStyle">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayersStack" sections="//@tabs.0/@sections.1" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStack">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerExpression" sections="//@tabs.0/@sections.2" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerExpression">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+ </constraints>
+ </views>
+ <views name="Single ApplicationDependantElement" sections="//@tabs.0/@sections.3" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleApplicationDependantElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayersStackApplication" sections="//@tabs.0/@sections.4" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStackApplication">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FolderElement" sections="//@tabs.0/@sections.5" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolderElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.6" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerStackDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyRegistry" sections="//@tabs.0/@sections.7" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single Property" sections="//@tabs.0/@sections.8" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleProperty">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Type" sections="//@tabs.0/@sections.9" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Metamodel" sections="//@tabs.0/@sections.10" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleMetamodel">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single TypeInstance" sections="//@tabs.0/@sections.11" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+ </constraints>
+ </views>
+ <views name="Single ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.12" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleComputePropertyValueCommandItf">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+ </constraints>
+ </views>
+ <views name="Single TypeRegistry" sections="//@tabs.0/@sections.13" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single StringToTypeMap" sections="//@tabs.0/@sections.14" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+ </constraints>
+ </views>
+ <views name="Single LayerDescriptorRegistry" sections="//@tabs.0/@sections.15" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerDescriptor" sections="//@tabs.0/@sections.16" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single LayerApplicationFactory" sections="//@tabs.0/@sections.17" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerApplicationFactory">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+ </constraints>
+ </views>
+ <views name="Single PropertySetterRegistry" sections="//@tabs.0/@sections.18" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetterRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single PropertySetter" sections="//@tabs.0/@sections.19" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single StringToPropertySetter" sections="//@tabs.0/@sections.20" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single AbstractLayer" sections="//@tabs.0/@sections.21" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringToTypeInstanceMap" sections="//@tabs.0/@sections.22" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeInstanceMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+ </constraints>
+ </views>
+ <views name="Single Folder" sections="//@tabs.0/@sections.23" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolder">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IntInstance" sections="//@tabs.0/@sections.24" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single BooleanInstance" sections="//@tabs.0/@sections.25" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+ </constraints>
+ </views>
+ <views name="Single StringInstance" sections="//@tabs.0/@sections.26" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+ </constraints>
+ </views>
+ <views name="Single IntType" sections="//@tabs.0/@sections.27" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single BooleanType" sections="//@tabs.0/@sections.28" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+ </constraints>
+ </views>
+ <views name="Single StringType" sections="//@tabs.0/@sections.29" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single CustomType" sections="//@tabs.0/@sections.30" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+ </constraints>
+ </views>
+ <views name="Single LayerOperator" sections="//@tabs.0/@sections.31" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single AbstractLayerOperator" sections="//@tabs.0/@sections.32" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single TopLayerOperator" sections="//@tabs.0/@sections.33" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single StackedLayerOperator" sections="//@tabs.0/@sections.34" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single CustomLayerOperator" sections="//@tabs.0/@sections.35" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyIndex" sections="//@tabs.0/@sections.36" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyIndex">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringToPropertyIndexMap" sections="//@tabs.0/@sections.37" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertyIndexMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single SimpleLayerDescriptor" sections="//@tabs.0/@sections.38" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleSimpleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single RegExpLayerDescriptor" sections="//@tabs.0/@sections.39" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single NullInstance" sections="//@tabs.0/@sections.40" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single RegExpLayer" sections="//@tabs.0/@sections.41" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Layer" sections="//@tabs.0/@sections.42" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+ </constraints>
+ </views>
+ <views name="Single Color" sections="//@tabs.0/@sections.43" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single ColorInstances" sections="//@tabs.0/@sections.44" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColorInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+ </constraints>
+ </views>
+ <views name="Single FillInstance" sections="//@tabs.0/@sections.45" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+ </constraints>
+ </views>
+ <views name="Single Fill" sections="//@tabs.0/@sections.46" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFill">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+ </constraints>
+ </views>
+ <views name="Single FillPropertySetter" sections="//@tabs.0/@sections.47" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IsValidPropertySetter" sections="//@tabs.0/@sections.48" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsValidPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single NullPropertySetter" sections="//@tabs.0/@sections.49" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LineType" sections="//@tabs.0/@sections.50" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LineInstance" sections="//@tabs.0/@sections.51" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+ </constraints>
+ </views>
+ <views name="Single LinePropertySetter" sections="//@tabs.0/@sections.52" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLinePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single FontPropertySetter" sections="//@tabs.0/@sections.53" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FontInstance" sections="//@tabs.0/@sections.54" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FontType" sections="//@tabs.0/@sections.55" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IsVisiblePropertySetter" sections="//@tabs.0/@sections.56" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsVisiblePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerNamedStyle" sections="//@tabs.0/@sections.57" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerNamedStyle">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayersStack" sections="//@tabs.0/@sections.58" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStack">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerExpression" sections="//@tabs.0/@sections.59" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerExpression">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ApplicationDependantElement" sections="//@tabs.0/@sections.60" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleApplicationDependantElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayersStackApplication" sections="//@tabs.0/@sections.61" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStackApplication">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FolderElement" sections="//@tabs.0/@sections.62" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolderElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.63" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerStackDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyRegistry" sections="//@tabs.0/@sections.64" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Property" sections="//@tabs.0/@sections.65" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleProperty">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Type" sections="//@tabs.0/@sections.66" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Metamodel" sections="//@tabs.0/@sections.67" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleMetamodel">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TypeInstance" sections="//@tabs.0/@sections.68" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.69" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleComputePropertyValueCommandItf">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TypeRegistry" sections="//@tabs.0/@sections.70" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToTypeMap" sections="//@tabs.0/@sections.71" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerDescriptorRegistry" sections="//@tabs.0/@sections.72" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerDescriptor" sections="//@tabs.0/@sections.73" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerApplicationFactory" sections="//@tabs.0/@sections.74" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerApplicationFactory">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertySetterRegistry" sections="//@tabs.0/@sections.75" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetterRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertySetter" sections="//@tabs.0/@sections.76" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToPropertySetter" sections="//@tabs.0/@sections.77" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AbstractLayer" sections="//@tabs.0/@sections.78" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToTypeInstanceMap" sections="//@tabs.0/@sections.79" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeInstanceMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Folder" sections="//@tabs.0/@sections.80" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolder">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IntInstance" sections="//@tabs.0/@sections.81" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple BooleanInstance" sections="//@tabs.0/@sections.82" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringInstance" sections="//@tabs.0/@sections.83" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IntType" sections="//@tabs.0/@sections.84" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple BooleanType" sections="//@tabs.0/@sections.85" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringType" sections="//@tabs.0/@sections.86" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomType" sections="//@tabs.0/@sections.87" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerOperator" sections="//@tabs.0/@sections.88" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AbstractLayerOperator" sections="//@tabs.0/@sections.89" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TopLayerOperator" sections="//@tabs.0/@sections.90" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StackedLayerOperator" sections="//@tabs.0/@sections.91" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomLayerOperator" sections="//@tabs.0/@sections.92" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyIndex" sections="//@tabs.0/@sections.93" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyIndex">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToPropertyIndexMap" sections="//@tabs.0/@sections.94" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertyIndexMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple SimpleLayerDescriptor" sections="//@tabs.0/@sections.95" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleSimpleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple RegExpLayerDescriptor" sections="//@tabs.0/@sections.96" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple NullInstance" sections="//@tabs.0/@sections.97" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple RegExpLayer" sections="//@tabs.0/@sections.98" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Layer" sections="//@tabs.0/@sections.99" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Color" sections="//@tabs.0/@sections.100" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ColorInstance" sections="//@tabs.0/@sections.101" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColorInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FillInstance" sections="//@tabs.0/@sections.102" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Fill" sections="//@tabs.0/@sections.103" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFill">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FillPropertySetter" sections="//@tabs.0/@sections.104" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsValidPropertySetter" sections="//@tabs.0/@sections.105" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsValidPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple NullPropertySetter" sections="//@tabs.0/@sections.106" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LineType" sections="//@tabs.0/@sections.107" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LineInstance" sections="//@tabs.0/@sections.108" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LinePropertySetter" sections="//@tabs.0/@sections.109" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLinePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontPropertySetter" sections="//@tabs.0/@sections.110" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontInstance" sections="//@tabs.0/@sections.111" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontType" sections="//@tabs.0/@sections.112" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsVisiblePropertySetter" sections="//@tabs.0/@sections.113" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsVisiblePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <dataContexts name="layers" label="layers">
+ <elements name="LayerNamedStyle">
+ <properties name="layersStack" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="LayersStack">
+ <properties name="layers" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="diagram" type="Reference"/>
+ </elements>
+ <elements name="LayerExpression" supertypes="//@dataContexts.0/@elements.3">
+ <properties name="name"/>
+ <properties name="description"/>
+ </elements>
+ <elements name="ApplicationDependantElement">
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="LayersStackApplication" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="layersStacks" type="Reference" multiplicity="-1"/>
+ <properties name="layerStackRegistry" type="Reference"/>
+ <properties name="propertyRegistry" type="Reference"/>
+ <properties name="layerDescriptorRegistry" type="Reference"/>
+ <properties name="factory" type="Reference"/>
+ <properties name="propertySetterRegistry" type="Reference"/>
+ </elements>
+ <elements name="FolderElement"/>
+ <elements name="LayerStackDescriptorRegistry"/>
+ <elements name="PropertyRegistry">
+ <properties name="properties" type="Reference" multiplicity="-1"/>
+ <properties name="typeRegistry" type="Reference"/>
+ </elements>
+ <elements name="Property" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="type" type="Reference"/>
+ <properties name="defaultValue" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="index" type="Integer"/>
+ </elements>
+ <elements name="Type" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="metamodel" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ </elements>
+ <elements name="Metamodel" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="nsuri"/>
+ <properties name="pluginID"/>
+ <properties name="ePackageInstanceName"/>
+ <properties name="isTypeValid" type="Boolean"/>
+ </elements>
+ <elements name="TypeInstance" supertypes="//@dataContexts.0/@elements.12"/>
+ <elements name="ComputePropertyValueCommandItf"/>
+ <elements name="TypeRegistry">
+ <properties name="types" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="StringToTypeMap">
+ <properties name="value" type="Reference"/>
+ <properties name="key"/>
+ </elements>
+ <elements name="LayerDescriptorRegistry">
+ <properties name="layerDescriptors" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="LayerDescriptor">
+ <properties name="propertyRegistry" type="Reference"/>
+ </elements>
+ <elements name="LayerApplicationFactory">
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="PropertySetterRegistry">
+ <properties name="propertySetters" type="Reference" multiplicity="-1"/>
+ <properties name="setterMap" type="Reference" multiplicity="-1"/>
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="PropertySetter">
+ <properties name="property" type="Reference"/>
+ <properties name="propertyName"/>
+ </elements>
+ <elements name="StringToPropertySetter">
+ <properties name="key"/>
+ <properties name="value" type="Reference"/>
+ </elements>
+ <elements name="AbstractLayer" supertypes="//@dataContexts.0/@elements.2">
+ <properties name="propertyValues" type="Reference" multiplicity="-1"/>
+ <properties name="propertyValueMap" type="Reference" multiplicity="-1"/>
+ <properties name="layerDescriptor" type="Reference"/>
+ <properties name="views" type="Reference" multiplicity="-1"/>
+ <properties name="attachedProperties" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="StringToTypeInstanceMap">
+ <properties name="key"/>
+ <properties name="value" type="Reference"/>
+ </elements>
+ <elements name="Folder" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="elements" type="Reference" multiplicity="-1"/>
+ <properties name="name"/>
+ </elements>
+ <elements name="IntInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Integer"/>
+ </elements>
+ <elements name="BooleanInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Boolean"/>
+ </elements>
+ <elements name="StringInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value"/>
+ </elements>
+ <elements name="IntType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="BooleanType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="StringType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="CustomType" supertypes="//@dataContexts.0/@elements.9">
+ <properties name="classifier"/>
+ </elements>
+ <elements name="LayerOperator" supertypes="//@dataContexts.0/@elements.2">
+ <properties name="layers" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="AbstractLayerOperator" supertypes="//@dataContexts.0/@elements.31"/>
+ <elements name="TopLayerOperator" supertypes="//@dataContexts.0/@elements.32"/>
+ <elements name="StackedLayerOperator" supertypes="//@dataContexts.0/@elements.32"/>
+ <elements name="CustomLayerOperator" supertypes="//@dataContexts.0/@elements.31"/>
+ <elements name="PropertyIndex">
+ <properties name="property" type="Reference"/>
+ <properties name="index" type="Integer"/>
+ </elements>
+ <elements name="StringToPropertyIndexMap">
+ <properties name="value" type="Reference"/>
+ <properties name="key"/>
+ </elements>
+ <elements name="SimpleLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+ <elements name="RegExpLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+ <elements name="NullInstance" supertypes="//@dataContexts.0/@elements.11"/>
+ <elements name="RegExpLayer" supertypes="//@dataContexts.0/@elements.21"/>
+ <elements name="Layer" supertypes="//@dataContexts.0/@elements.21"/>
+ <elements name="Color" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="ColorInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Integer"/>
+ </elements>
+ <elements name="FillInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="transparency" type="Integer"/>
+ <properties name="fillColor" type="Reference"/>
+ </elements>
+ <elements name="Fill" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="FillPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="IsValidPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="NullPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="LineType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="LineInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="lineColor" type="Integer"/>
+ <properties name="lineWith" type="Integer"/>
+ </elements>
+ <elements name="LinePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="FontPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="FontInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="fontColor" type="Integer"/>
+ <properties name="fontName"/>
+ <properties name="fontHeigh" type="Integer"/>
+ <properties name="bold" type="Boolean"/>
+ </elements>
+ <elements name="FontType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="IsVisiblePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@modelElementFactories.0"/>
+ </dataContexts>
+</contexts:Context>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-v1.ctx b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-v1.ctx
new file mode 100644
index 00000000000..fed41cf0ec6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-v1.ctx
@@ -0,0 +1,1306 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" name="layers">
+ <tabs label="layers" id="layers" category="org.eclipse.papyrus" priority="100">
+ <sections name="Single LayerNamedStyle" sectionFile="ui/SingleLayerNamedStyle.xwt">
+ <widget href="ui/SingleLayerNamedStyle.xwt#/"/>
+ </sections>
+ <sections name="Single LayersStack" sectionFile="ui/SingleLayersStack.xwt">
+ <widget href="ui/SingleLayersStack.xwt#/"/>
+ </sections>
+ <sections name="Single LayerExpression" sectionFile="ui/SingleLayerExpression.xwt">
+ <widget href="ui/SingleLayerExpression.xwt#/"/>
+ </sections>
+ <sections name="Single ApplicationDependantElement" sectionFile="ui/SingleApplicationDependantElement.xwt">
+ <widget href="ui/SingleApplicationDependantElement.xwt#/"/>
+ </sections>
+ <sections name="Single LayersStackApplication" sectionFile="ui/SingleLayersStackApplication.xwt">
+ <widget href="ui/SingleLayersStackApplication.xwt#/"/>
+ </sections>
+ <sections name="Single FolderElement" sectionFile="ui/SingleFolderElement.xwt">
+ <widget href="ui/SingleFolderElement.xwt#/"/>
+ </sections>
+ <sections name="Single LayerStackDescriptorRegistry" sectionFile="ui/SingleLayerStackDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerStackDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyRegistry" sectionFile="ui/SinglePropertyRegistry.xwt">
+ <widget href="ui/SinglePropertyRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single Property" sectionFile="ui/SingleProperty.xwt">
+ <widget href="ui/SingleProperty.xwt#/"/>
+ </sections>
+ <sections name="Single Type" sectionFile="ui/SingleType.xwt">
+ <widget href="ui/SingleType.xwt#/"/>
+ </sections>
+ <sections name="Single Metamodel" sectionFile="ui/SingleMetamodel.xwt">
+ <widget href="ui/SingleMetamodel.xwt#/"/>
+ </sections>
+ <sections name="Single TypeInstance" sectionFile="ui/SingleTypeInstance.xwt">
+ <widget href="ui/SingleTypeInstance.xwt#/"/>
+ </sections>
+ <sections name="Single ComputePropertyValueCommandItf" sectionFile="ui/SingleComputePropertyValueCommandItf.xwt">
+ <widget href="ui/SingleComputePropertyValueCommandItf.xwt#/"/>
+ </sections>
+ <sections name="Single TypeRegistry" sectionFile="ui/SingleTypeRegistry.xwt">
+ <widget href="ui/SingleTypeRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single StringToTypeMap" sectionFile="ui/SingleStringToTypeMap.xwt">
+ <widget href="ui/SingleStringToTypeMap.xwt#/"/>
+ </sections>
+ <sections name="Single LayerDescriptorRegistry" sectionFile="ui/SingleLayerDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single LayerDescriptor" sectionFile="ui/SingleLayerDescriptor.xwt">
+ <widget href="ui/SingleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single LayerApplicationFactory" sectionFile="ui/SingleLayerApplicationFactory.xwt">
+ <widget href="ui/SingleLayerApplicationFactory.xwt#/"/>
+ </sections>
+ <sections name="Single PropertySetterRegistry" sectionFile="ui/SinglePropertySetterRegistry.xwt">
+ <widget href="ui/SinglePropertySetterRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single PropertySetter" sectionFile="ui/SinglePropertySetter.xwt">
+ <widget href="ui/SinglePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single StringToPropertySetter" sectionFile="ui/SingleStringToPropertySetter.xwt">
+ <widget href="ui/SingleStringToPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single AbstractLayer" sectionFile="ui/SingleAbstractLayer.xwt">
+ <widget href="ui/SingleAbstractLayer.xwt#/"/>
+ </sections>
+ <sections name="Single StringToTypeInstanceMap" sectionFile="ui/SingleStringToTypeInstanceMap.xwt">
+ <widget href="ui/SingleStringToTypeInstanceMap.xwt#/"/>
+ </sections>
+ <sections name="Single Folder" sectionFile="ui/SingleFolder.xwt">
+ <widget href="ui/SingleFolder.xwt#/"/>
+ </sections>
+ <sections name="Single IntInstance" sectionFile="ui/SingleIntInstance.xwt">
+ <widget href="ui/SingleIntInstance.xwt#/"/>
+ </sections>
+ <sections name="Single BooleanInstance" sectionFile="ui/SingleBooleanInstance.xwt">
+ <widget href="ui/SingleBooleanInstance.xwt#/"/>
+ </sections>
+ <sections name="Single StringInstance" sectionFile="ui/SingleStringInstance.xwt">
+ <widget href="ui/SingleStringInstance.xwt#/"/>
+ </sections>
+ <sections name="Single IntType" sectionFile="ui/SingleIntType.xwt">
+ <widget href="ui/SingleIntType.xwt#/"/>
+ </sections>
+ <sections name="Single BooleanType" sectionFile="ui/SingleBooleanType.xwt">
+ <widget href="ui/SingleBooleanType.xwt#/"/>
+ </sections>
+ <sections name="Single StringType" sectionFile="ui/SingleStringType.xwt">
+ <widget href="ui/SingleStringType.xwt#/"/>
+ </sections>
+ <sections name="Single CustomType" sectionFile="ui/SingleCustomType.xwt">
+ <widget href="ui/SingleCustomType.xwt#/"/>
+ </sections>
+ <sections name="Single LayerOperator" sectionFile="ui/SingleLayerOperator.xwt">
+ <widget href="ui/SingleLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single AbstractLayerOperator" sectionFile="ui/SingleAbstractLayerOperator.xwt">
+ <widget href="ui/SingleAbstractLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single TopLayerOperator" sectionFile="ui/SingleTopLayerOperator.xwt">
+ <widget href="ui/SingleTopLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single StackedLayerOperator" sectionFile="ui/SingleStackedLayerOperator.xwt">
+ <widget href="ui/SingleStackedLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single CustomLayerOperator" sectionFile="ui/SingleCustomLayerOperator.xwt">
+ <widget href="ui/SingleCustomLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyIndex" sectionFile="ui/SinglePropertyIndex.xwt">
+ <widget href="ui/SinglePropertyIndex.xwt#/"/>
+ </sections>
+ <sections name="Single StringToPropertyIndexMap" sectionFile="ui/SingleStringToPropertyIndexMap.xwt">
+ <widget href="ui/SingleStringToPropertyIndexMap.xwt#/"/>
+ </sections>
+ <sections name="Single SimpleLayerDescriptor" sectionFile="ui/SingleSimpleLayerDescriptor.xwt">
+ <widget href="ui/SingleSimpleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single RegExpLayerDescriptor" sectionFile="ui/SingleRegExpLayerDescriptor.xwt">
+ <widget href="ui/SingleRegExpLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single NullInstance" sectionFile="ui/SingleNullInstance.xwt">
+ <widget href="ui/SingleNullInstance.xwt#/"/>
+ </sections>
+ <sections name="Single RegExpLayer" sectionFile="ui/SingleRegExpLayer.xwt">
+ <widget href="ui/SingleRegExpLayer.xwt#/"/>
+ </sections>
+ <sections name="Single Layer" sectionFile="ui/SingleLayer.xwt">
+ <widget href="ui/SingleLayer.xwt#/"/>
+ </sections>
+ <sections name="Single Color" sectionFile="ui/SingleColor.xwt">
+ <widget href="ui/SingleColor.xwt#/"/>
+ </sections>
+ <sections name="Single ColorInstance" sectionFile="ui/SingleColorInstance.xwt">
+ <widget href="ui/SingleColorInstance.xwt#/"/>
+ </sections>
+ <sections name="Single FillInstance" sectionFile="ui/SingleFillInstance.xwt">
+ <widget href="ui/SingleFillInstance.xwt#/"/>
+ </sections>
+ <sections name="Single Fill" sectionFile="ui/SingleFill.xwt">
+ <widget href="ui/SingleFill.xwt#/"/>
+ </sections>
+ <sections name="Single FillPropertySetter" sectionFile="ui/SingleFillPropertySetter.xwt">
+ <widget href="ui/SingleFillPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single IsValidPropertySetter" sectionFile="ui/SingleIsValidPropertySetter.xwt">
+ <widget href="ui/SingleIsValidPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single NullPropertySetter" sectionFile="ui/SingleNullPropertySetter.xwt">
+ <widget href="ui/SingleNullPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single LineType" sectionFile="ui/SingleLineType.xwt">
+ <widget href="ui/SingleLineType.xwt#/"/>
+ </sections>
+ <sections name="Single LineInstance" sectionFile="ui/SingleLineInstance.xwt">
+ <widget href="ui/SingleLineInstance.xwt#/"/>
+ </sections>
+ <sections name="Single LinePropertySetter" sectionFile="ui/SingleLinePropertySetter.xwt">
+ <widget href="ui/SingleLinePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single FontPropertySetter" sectionFile="ui/SingleFontPropertySetter.xwt">
+ <widget href="ui/SingleFontPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single FontInstance" sectionFile="ui/SingleFontInstance.xwt">
+ <widget href="ui/SingleFontInstance.xwt#/"/>
+ </sections>
+ <sections name="Single FontType" sectionFile="ui/SingleFontType.xwt">
+ <widget href="ui/SingleFontType.xwt#/"/>
+ </sections>
+ <sections name="Single IsVisiblePropertySetter" sectionFile="ui/SingleIsVisiblePropertySetter.xwt">
+ <widget href="ui/SingleIsVisiblePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerNamedStyle" sectionFile="ui/MultipleLayerNamedStyle.xwt">
+ <widget href="ui/MultipleLayerNamedStyle.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayersStack" sectionFile="ui/MultipleLayersStack.xwt">
+ <widget href="ui/MultipleLayersStack.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerExpression" sectionFile="ui/MultipleLayerExpression.xwt">
+ <widget href="ui/MultipleLayerExpression.xwt#/"/>
+ </sections>
+ <sections name="Multiple ApplicationDependantElement" sectionFile="ui/MultipleApplicationDependantElement.xwt">
+ <widget href="ui/MultipleApplicationDependantElement.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayersStackApplication" sectionFile="ui/MultipleLayersStackApplication.xwt">
+ <widget href="ui/MultipleLayersStackApplication.xwt#/"/>
+ </sections>
+ <sections name="Multiple FolderElement" sectionFile="ui/MultipleFolderElement.xwt">
+ <widget href="ui/MultipleFolderElement.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerStackDescriptorRegistry" sectionFile="ui/MultipleLayerStackDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerStackDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyRegistry" sectionFile="ui/MultiplePropertyRegistry.xwt">
+ <widget href="ui/MultiplePropertyRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple Property" sectionFile="ui/MultipleProperty.xwt">
+ <widget href="ui/MultipleProperty.xwt#/"/>
+ </sections>
+ <sections name="Multiple Type" sectionFile="ui/MultipleType.xwt">
+ <widget href="ui/MultipleType.xwt#/"/>
+ </sections>
+ <sections name="Multiple Metamodel" sectionFile="ui/MultipleMetamodel.xwt">
+ <widget href="ui/MultipleMetamodel.xwt#/"/>
+ </sections>
+ <sections name="Multiple TypeInstance" sectionFile="ui/MultipleTypeInstance.xwt">
+ <widget href="ui/MultipleTypeInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple ComputePropertyValueCommandItf" sectionFile="ui/MultipleComputePropertyValueCommandItf.xwt">
+ <widget href="ui/MultipleComputePropertyValueCommandItf.xwt#/"/>
+ </sections>
+ <sections name="Multiple TypeRegistry" sectionFile="ui/MultipleTypeRegistry.xwt">
+ <widget href="ui/MultipleTypeRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToTypeMap" sectionFile="ui/MultipleStringToTypeMap.xwt">
+ <widget href="ui/MultipleStringToTypeMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerDescriptorRegistry" sectionFile="ui/MultipleLayerDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerDescriptor" sectionFile="ui/MultipleLayerDescriptor.xwt">
+ <widget href="ui/MultipleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerApplicationFactory" sectionFile="ui/MultipleLayerApplicationFactory.xwt">
+ <widget href="ui/MultipleLayerApplicationFactory.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertySetterRegistry" sectionFile="ui/MultiplePropertySetterRegistry.xwt">
+ <widget href="ui/MultiplePropertySetterRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertySetter" sectionFile="ui/MultiplePropertySetter.xwt">
+ <widget href="ui/MultiplePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToPropertySetter" sectionFile="ui/MultipleStringToPropertySetter.xwt">
+ <widget href="ui/MultipleStringToPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple AbstractLayer" sectionFile="ui/MultipleAbstractLayer.xwt">
+ <widget href="ui/MultipleAbstractLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToTypeInstanceMap" sectionFile="ui/MultipleStringToTypeInstanceMap.xwt">
+ <widget href="ui/MultipleStringToTypeInstanceMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple Folder" sectionFile="ui/MultipleFolder.xwt">
+ <widget href="ui/MultipleFolder.xwt#/"/>
+ </sections>
+ <sections name="Multiple IntInstance" sectionFile="ui/MultipleIntInstance.xwt">
+ <widget href="ui/MultipleIntInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple BooleanInstance" sectionFile="ui/MultipleBooleanInstance.xwt">
+ <widget href="ui/MultipleBooleanInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringInstance" sectionFile="ui/MultipleStringInstance.xwt">
+ <widget href="ui/MultipleStringInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple IntType" sectionFile="ui/MultipleIntType.xwt">
+ <widget href="ui/MultipleIntType.xwt#/"/>
+ </sections>
+ <sections name="Multiple BooleanType" sectionFile="ui/MultipleBooleanType.xwt">
+ <widget href="ui/MultipleBooleanType.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringType" sectionFile="ui/MultipleStringType.xwt">
+ <widget href="ui/MultipleStringType.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomType" sectionFile="ui/MultipleCustomType.xwt">
+ <widget href="ui/MultipleCustomType.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerOperator" sectionFile="ui/MultipleLayerOperator.xwt">
+ <widget href="ui/MultipleLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple AbstractLayerOperator" sectionFile="ui/MultipleAbstractLayerOperator.xwt">
+ <widget href="ui/MultipleAbstractLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple TopLayerOperator" sectionFile="ui/MultipleTopLayerOperator.xwt">
+ <widget href="ui/MultipleTopLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple StackedLayerOperator" sectionFile="ui/MultipleStackedLayerOperator.xwt">
+ <widget href="ui/MultipleStackedLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomLayerOperator" sectionFile="ui/MultipleCustomLayerOperator.xwt">
+ <widget href="ui/MultipleCustomLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyIndex" sectionFile="ui/MultiplePropertyIndex.xwt">
+ <widget href="ui/MultiplePropertyIndex.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToPropertyIndexMap" sectionFile="ui/MultipleStringToPropertyIndexMap.xwt">
+ <widget href="ui/MultipleStringToPropertyIndexMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple SimpleLayerDescriptor" sectionFile="ui/MultipleSimpleLayerDescriptor.xwt">
+ <widget href="ui/MultipleSimpleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple RegExpLayerDescriptor" sectionFile="ui/MultipleRegExpLayerDescriptor.xwt">
+ <widget href="ui/MultipleRegExpLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple NullInstance" sectionFile="ui/MultipleNullInstance.xwt">
+ <widget href="ui/MultipleNullInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple RegExpLayer" sectionFile="ui/MultipleRegExpLayer.xwt">
+ <widget href="ui/MultipleRegExpLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple Layer" sectionFile="ui/MultipleLayer.xwt">
+ <widget href="ui/MultipleLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple Color" sectionFile="ui/MultipleColor.xwt">
+ <widget href="ui/MultipleColor.xwt#/"/>
+ </sections>
+ <sections name="Multiple ColorInstance" sectionFile="ui/MultipleColorInstance.xwt">
+ <widget href="ui/MultipleColorInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple FillInstance" sectionFile="ui/MultipleFillInstance.xwt">
+ <widget href="ui/MultipleFillInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple Fill" sectionFile="ui/MultipleFill.xwt">
+ <widget href="ui/MultipleFill.xwt#/"/>
+ </sections>
+ <sections name="Multiple FillPropertySetter" sectionFile="ui/MultipleFillPropertySetter.xwt">
+ <widget href="ui/MultipleFillPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsValidPropertySetter" sectionFile="ui/MultipleIsValidPropertySetter.xwt">
+ <widget href="ui/MultipleIsValidPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple NullPropertySetter" sectionFile="ui/MultipleNullPropertySetter.xwt">
+ <widget href="ui/MultipleNullPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LineType" sectionFile="ui/MultipleLineType.xwt">
+ <widget href="ui/MultipleLineType.xwt#/"/>
+ </sections>
+ <sections name="Multiple LineInstance" sectionFile="ui/MultipleLineInstance.xwt">
+ <widget href="ui/MultipleLineInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple LinePropertySetter" sectionFile="ui/MultipleLinePropertySetter.xwt">
+ <widget href="ui/MultipleLinePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontPropertySetter" sectionFile="ui/MultipleFontPropertySetter.xwt">
+ <widget href="ui/MultipleFontPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontInstance" sectionFile="ui/MultipleFontInstance.xwt">
+ <widget href="ui/MultipleFontInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontType" sectionFile="ui/MultipleFontType.xwt">
+ <widget href="ui/MultipleFontType.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsVisiblePropertySetter" sectionFile="ui/MultipleIsVisiblePropertySetter.xwt">
+ <widget href="ui/MultipleIsVisiblePropertySetter.xwt#/"/>
+ </sections>
+ </tabs>
+ <views name="Single LayerNamedStyle" sections="//@tabs.0/@sections.0" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerNamedStyle">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayersStack" sections="//@tabs.0/@sections.1" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStack">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerExpression" sections="//@tabs.0/@sections.2" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerExpression">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+ </constraints>
+ </views>
+ <views name="Single ApplicationDependantElement" sections="//@tabs.0/@sections.3" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleApplicationDependantElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayersStackApplication" sections="//@tabs.0/@sections.4" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStackApplication">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FolderElement" sections="//@tabs.0/@sections.5" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolderElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.6" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerStackDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyRegistry" sections="//@tabs.0/@sections.7" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single Property" sections="//@tabs.0/@sections.8" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleProperty">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Type" sections="//@tabs.0/@sections.9" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Metamodel" sections="//@tabs.0/@sections.10" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleMetamodel">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single TypeInstance" sections="//@tabs.0/@sections.11" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+ </constraints>
+ </views>
+ <views name="Single ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.12" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleComputePropertyValueCommandItf">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+ </constraints>
+ </views>
+ <views name="Single TypeRegistry" sections="//@tabs.0/@sections.13" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single StringToTypeMap" sections="//@tabs.0/@sections.14" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+ </constraints>
+ </views>
+ <views name="Single LayerDescriptorRegistry" sections="//@tabs.0/@sections.15" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerDescriptor" sections="//@tabs.0/@sections.16" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single LayerApplicationFactory" sections="//@tabs.0/@sections.17" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerApplicationFactory">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+ </constraints>
+ </views>
+ <views name="Single PropertySetterRegistry" sections="//@tabs.0/@sections.18" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetterRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single PropertySetter" sections="//@tabs.0/@sections.19" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single StringToPropertySetter" sections="//@tabs.0/@sections.20" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single AbstractLayer" sections="//@tabs.0/@sections.21" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringToTypeInstanceMap" sections="//@tabs.0/@sections.22" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeInstanceMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+ </constraints>
+ </views>
+ <views name="Single Folder" sections="//@tabs.0/@sections.23" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolder">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IntInstance" sections="//@tabs.0/@sections.24" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single BooleanInstance" sections="//@tabs.0/@sections.25" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+ </constraints>
+ </views>
+ <views name="Single StringInstance" sections="//@tabs.0/@sections.26" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+ </constraints>
+ </views>
+ <views name="Single IntType" sections="//@tabs.0/@sections.27" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single BooleanType" sections="//@tabs.0/@sections.28" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+ </constraints>
+ </views>
+ <views name="Single StringType" sections="//@tabs.0/@sections.29" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single CustomType" sections="//@tabs.0/@sections.30" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+ </constraints>
+ </views>
+ <views name="Single LayerOperator" sections="//@tabs.0/@sections.31" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single AbstractLayerOperator" sections="//@tabs.0/@sections.32" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single TopLayerOperator" sections="//@tabs.0/@sections.33" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single StackedLayerOperator" sections="//@tabs.0/@sections.34" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single CustomLayerOperator" sections="//@tabs.0/@sections.35" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyIndex" sections="//@tabs.0/@sections.36" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyIndex">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringToPropertyIndexMap" sections="//@tabs.0/@sections.37" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertyIndexMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single SimpleLayerDescriptor" sections="//@tabs.0/@sections.38" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleSimpleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single RegExpLayerDescriptor" sections="//@tabs.0/@sections.39" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single NullInstance" sections="//@tabs.0/@sections.40" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single RegExpLayer" sections="//@tabs.0/@sections.41" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Layer" sections="//@tabs.0/@sections.42" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+ </constraints>
+ </views>
+ <views name="Single Color" sections="//@tabs.0/@sections.43" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single ColorInstances" sections="//@tabs.0/@sections.44" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColorInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+ </constraints>
+ </views>
+ <views name="Single FillInstance" sections="//@tabs.0/@sections.45" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+ </constraints>
+ </views>
+ <views name="Single Fill" sections="//@tabs.0/@sections.46" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFill">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+ </constraints>
+ </views>
+ <views name="Single FillPropertySetter" sections="//@tabs.0/@sections.47" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IsValidPropertySetter" sections="//@tabs.0/@sections.48" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsValidPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single NullPropertySetter" sections="//@tabs.0/@sections.49" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LineType" sections="//@tabs.0/@sections.50" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LineInstance" sections="//@tabs.0/@sections.51" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+ </constraints>
+ </views>
+ <views name="Single LinePropertySetter" sections="//@tabs.0/@sections.52" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLinePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single FontPropertySetter" sections="//@tabs.0/@sections.53" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FontInstance" sections="//@tabs.0/@sections.54" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FontType" sections="//@tabs.0/@sections.55" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IsVisiblePropertySetter" sections="//@tabs.0/@sections.56" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsVisiblePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerNamedStyle" sections="//@tabs.0/@sections.57" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerNamedStyle">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayersStack" sections="//@tabs.0/@sections.58" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStack">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerExpression" sections="//@tabs.0/@sections.59" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerExpression">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ApplicationDependantElement" sections="//@tabs.0/@sections.60" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleApplicationDependantElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayersStackApplication" sections="//@tabs.0/@sections.61" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStackApplication">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FolderElement" sections="//@tabs.0/@sections.62" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolderElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.63" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerStackDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyRegistry" sections="//@tabs.0/@sections.64" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Property" sections="//@tabs.0/@sections.65" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleProperty">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Type" sections="//@tabs.0/@sections.66" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Metamodel" sections="//@tabs.0/@sections.67" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleMetamodel">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TypeInstance" sections="//@tabs.0/@sections.68" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.69" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleComputePropertyValueCommandItf">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TypeRegistry" sections="//@tabs.0/@sections.70" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToTypeMap" sections="//@tabs.0/@sections.71" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerDescriptorRegistry" sections="//@tabs.0/@sections.72" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerDescriptor" sections="//@tabs.0/@sections.73" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerApplicationFactory" sections="//@tabs.0/@sections.74" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerApplicationFactory">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertySetterRegistry" sections="//@tabs.0/@sections.75" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetterRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertySetter" sections="//@tabs.0/@sections.76" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToPropertySetter" sections="//@tabs.0/@sections.77" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AbstractLayer" sections="//@tabs.0/@sections.78" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToTypeInstanceMap" sections="//@tabs.0/@sections.79" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeInstanceMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Folder" sections="//@tabs.0/@sections.80" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolder">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IntInstance" sections="//@tabs.0/@sections.81" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple BooleanInstance" sections="//@tabs.0/@sections.82" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringInstance" sections="//@tabs.0/@sections.83" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IntType" sections="//@tabs.0/@sections.84" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple BooleanType" sections="//@tabs.0/@sections.85" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringType" sections="//@tabs.0/@sections.86" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomType" sections="//@tabs.0/@sections.87" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerOperator" sections="//@tabs.0/@sections.88" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AbstractLayerOperator" sections="//@tabs.0/@sections.89" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TopLayerOperator" sections="//@tabs.0/@sections.90" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StackedLayerOperator" sections="//@tabs.0/@sections.91" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomLayerOperator" sections="//@tabs.0/@sections.92" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyIndex" sections="//@tabs.0/@sections.93" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyIndex">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToPropertyIndexMap" sections="//@tabs.0/@sections.94" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertyIndexMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple SimpleLayerDescriptor" sections="//@tabs.0/@sections.95" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleSimpleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple RegExpLayerDescriptor" sections="//@tabs.0/@sections.96" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple NullInstance" sections="//@tabs.0/@sections.97" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple RegExpLayer" sections="//@tabs.0/@sections.98" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Layer" sections="//@tabs.0/@sections.99" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Color" sections="//@tabs.0/@sections.100" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ColorInstance" sections="//@tabs.0/@sections.101" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColorInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FillInstance" sections="//@tabs.0/@sections.102" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Fill" sections="//@tabs.0/@sections.103" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFill">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FillPropertySetter" sections="//@tabs.0/@sections.104" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsValidPropertySetter" sections="//@tabs.0/@sections.105" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsValidPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple NullPropertySetter" sections="//@tabs.0/@sections.106" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LineType" sections="//@tabs.0/@sections.107" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LineInstance" sections="//@tabs.0/@sections.108" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LinePropertySetter" sections="//@tabs.0/@sections.109" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLinePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontPropertySetter" sections="//@tabs.0/@sections.110" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontInstance" sections="//@tabs.0/@sections.111" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontType" sections="//@tabs.0/@sections.112" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsVisiblePropertySetter" sections="//@tabs.0/@sections.113" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsVisiblePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <dataContexts name="layers" label="layers">
+ <elements name="LayerNamedStyle">
+ <properties name="layersStack" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="LayersStack">
+ <properties name="layers" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="diagram" type="Reference"/>
+ </elements>
+ <elements name="LayerExpression" supertypes="//@dataContexts.0/@elements.3">
+ <properties name="name"/>
+ <properties name="description"/>
+ </elements>
+ <elements name="ApplicationDependantElement">
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="LayersStackApplication" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="layersStacks" type="Reference" multiplicity="-1"/>
+ <properties name="layerStackRegistry" type="Reference"/>
+ <properties name="propertyRegistry" type="Reference"/>
+ <properties name="layerDescriptorRegistry" type="Reference"/>
+ <properties name="factory" type="Reference"/>
+ <properties name="propertySetterRegistry" type="Reference"/>
+ </elements>
+ <elements name="FolderElement"/>
+ <elements name="LayerStackDescriptorRegistry"/>
+ <elements name="PropertyRegistry">
+ <properties name="properties" type="Reference" multiplicity="-1"/>
+ <properties name="typeRegistry" type="Reference"/>
+ </elements>
+ <elements name="Property" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="type" type="Reference"/>
+ <properties name="defaultValue" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="index" type="Integer"/>
+ </elements>
+ <elements name="Type" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="metamodel" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ </elements>
+ <elements name="Metamodel" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="nsuri"/>
+ <properties name="pluginID"/>
+ <properties name="ePackageInstanceName"/>
+ <properties name="isTypeValid" type="Boolean"/>
+ </elements>
+ <elements name="TypeInstance" supertypes="//@dataContexts.0/@elements.12"/>
+ <elements name="ComputePropertyValueCommandItf"/>
+ <elements name="TypeRegistry">
+ <properties name="types" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="StringToTypeMap">
+ <properties name="value" type="Reference"/>
+ <properties name="key"/>
+ </elements>
+ <elements name="LayerDescriptorRegistry">
+ <properties name="layerDescriptors" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="LayerDescriptor">
+ <properties name="propertyRegistry" type="Reference"/>
+ </elements>
+ <elements name="LayerApplicationFactory">
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="PropertySetterRegistry">
+ <properties name="propertySetters" type="Reference" multiplicity="-1"/>
+ <properties name="setterMap" type="Reference" multiplicity="-1"/>
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="PropertySetter">
+ <properties name="property" type="Reference"/>
+ <properties name="propertyName"/>
+ </elements>
+ <elements name="StringToPropertySetter">
+ <properties name="key"/>
+ <properties name="value" type="Reference"/>
+ </elements>
+ <elements name="AbstractLayer" supertypes="//@dataContexts.0/@elements.2">
+ <properties name="propertyValues" type="Reference" multiplicity="-1"/>
+ <properties name="propertyValueMap" type="Reference" multiplicity="-1"/>
+ <properties name="layerDescriptor" type="Reference"/>
+ <properties name="views" type="Reference" multiplicity="-1"/>
+ <properties name="attachedProperties" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="StringToTypeInstanceMap">
+ <properties name="key"/>
+ <properties name="value" type="Reference"/>
+ </elements>
+ <elements name="Folder" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="elements" type="Reference" multiplicity="-1"/>
+ <properties name="name"/>
+ </elements>
+ <elements name="IntInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Integer"/>
+ </elements>
+ <elements name="BooleanInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Boolean"/>
+ </elements>
+ <elements name="StringInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value"/>
+ </elements>
+ <elements name="IntType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="BooleanType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="StringType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="CustomType" supertypes="//@dataContexts.0/@elements.9">
+ <properties name="classifier"/>
+ </elements>
+ <elements name="LayerOperator" supertypes="//@dataContexts.0/@elements.2">
+ <properties name="layers" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="AbstractLayerOperator" supertypes="//@dataContexts.0/@elements.31"/>
+ <elements name="TopLayerOperator" supertypes="//@dataContexts.0/@elements.32"/>
+ <elements name="StackedLayerOperator" supertypes="//@dataContexts.0/@elements.32"/>
+ <elements name="CustomLayerOperator" supertypes="//@dataContexts.0/@elements.31"/>
+ <elements name="PropertyIndex">
+ <properties name="property" type="Reference"/>
+ <properties name="index" type="Integer"/>
+ </elements>
+ <elements name="StringToPropertyIndexMap">
+ <properties name="value" type="Reference"/>
+ <properties name="key"/>
+ </elements>
+ <elements name="SimpleLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+ <elements name="RegExpLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+ <elements name="NullInstance" supertypes="//@dataContexts.0/@elements.11"/>
+ <elements name="RegExpLayer" supertypes="//@dataContexts.0/@elements.21"/>
+ <elements name="Layer" supertypes="//@dataContexts.0/@elements.21"/>
+ <elements name="Color" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="ColorInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Integer"/>
+ </elements>
+ <elements name="FillInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="transparency" type="Integer"/>
+ <properties name="fillColor" type="Reference"/>
+ </elements>
+ <elements name="Fill" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="FillPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="IsValidPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="NullPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="LineType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="LineInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="lineColor" type="Integer"/>
+ <properties name="lineWith" type="Integer"/>
+ </elements>
+ <elements name="LinePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="FontPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="FontInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="fontColor" type="Integer"/>
+ <properties name="fontName"/>
+ <properties name="fontHeigh" type="Integer"/>
+ <properties name="bold" type="Boolean"/>
+ </elements>
+ <elements name="FontType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="IsVisiblePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@modelElementFactories.0"/>
+ </dataContexts>
+</contexts:Context>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-v2.ctx b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-v2.ctx
new file mode 100644
index 00000000000..41a0df4e8ab
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties-v2.ctx
@@ -0,0 +1,1540 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" name="layers">
+ <tabs label="layers" id="layers" priority="100">
+ <sections name="Single LayerNamedStyle" sectionFile="ui/SingleLayerNamedStyle.xwt">
+ <widget href="ui/SingleLayerNamedStyle.xwt#/"/>
+ </sections>
+ <sections name="Single LayersStack" sectionFile="ui/SingleLayersStack.xwt">
+ <widget href="ui/SingleLayersStack.xwt#/"/>
+ </sections>
+ <sections name="Single LayerExpression" sectionFile="ui/SingleLayerExpression.xwt">
+ <widget href="ui/SingleLayerExpression.xwt#/"/>
+ </sections>
+ <sections name="Single ApplicationDependantElement" sectionFile="ui/SingleApplicationDependantElement.xwt">
+ <widget href="ui/SingleApplicationDependantElement.xwt#/"/>
+ </sections>
+ <sections name="Single LayersStackApplication" sectionFile="ui/SingleLayersStackApplication.xwt">
+ <widget href="ui/SingleLayersStackApplication.xwt#/"/>
+ </sections>
+ <sections name="Single FolderElement" sectionFile="ui/SingleFolderElement.xwt">
+ <widget href="ui/SingleFolderElement.xwt#/"/>
+ </sections>
+ <sections name="Single LayerStackDescriptorRegistry" sectionFile="ui/SingleLayerStackDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerStackDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyRegistry" sectionFile="ui/SinglePropertyRegistry.xwt">
+ <widget href="ui/SinglePropertyRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single Property" sectionFile="ui/SingleProperty.xwt">
+ <widget href="ui/SingleProperty.xwt#/"/>
+ </sections>
+ <sections name="Single Type" sectionFile="ui/SingleType.xwt">
+ <widget href="ui/SingleType.xwt#/"/>
+ </sections>
+ <sections name="Single Metamodel" sectionFile="ui/SingleMetamodel.xwt">
+ <widget href="ui/SingleMetamodel.xwt#/"/>
+ </sections>
+ <sections name="Single TypeInstance" sectionFile="ui/SingleTypeInstance.xwt">
+ <widget href="ui/SingleTypeInstance.xwt#/"/>
+ </sections>
+ <sections name="Single ComputePropertyValueCommandItf" sectionFile="ui/SingleComputePropertyValueCommandItf.xwt">
+ <widget href="ui/SingleComputePropertyValueCommandItf.xwt#/"/>
+ </sections>
+ <sections name="Single TypeRegistry" sectionFile="ui/SingleTypeRegistry.xwt">
+ <widget href="ui/SingleTypeRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single StringToTypeMap" sectionFile="ui/SingleStringToTypeMap.xwt">
+ <widget href="ui/SingleStringToTypeMap.xwt#/"/>
+ </sections>
+ <sections name="Single LayerDescriptorRegistry" sectionFile="ui/SingleLayerDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single LayerDescriptor" sectionFile="ui/SingleLayerDescriptor.xwt">
+ <widget href="ui/SingleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single LayerApplicationFactory" sectionFile="ui/SingleLayerApplicationFactory.xwt">
+ <widget href="ui/SingleLayerApplicationFactory.xwt#/"/>
+ </sections>
+ <sections name="Single PropertySetterRegistry" sectionFile="ui/SinglePropertySetterRegistry.xwt">
+ <widget href="ui/SinglePropertySetterRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single PropertySetter" sectionFile="ui/SinglePropertySetter.xwt">
+ <widget href="ui/SinglePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single StringToPropertySetter" sectionFile="ui/SingleStringToPropertySetter.xwt">
+ <widget href="ui/SingleStringToPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single LayerOperatorDescriptorRegistry" sectionFile="ui/SingleLayerOperatorDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerOperatorDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single LayerOperatorDescriptor" sectionFile="ui/SingleLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyOperator" sectionFile="ui/SinglePropertyOperator.xwt">
+ <widget href="ui/SinglePropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Single AbstractLayerOperator" sectionFile="ui/SingleAbstractLayerOperator.xwt">
+ <widget href="ui/SingleAbstractLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single LayerOperator" sectionFile="ui/SingleLayerOperator.xwt">
+ <widget href="ui/SingleLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single DefaultPropertyOperator" sectionFile="ui/SingleDefaultPropertyOperator.xwt">
+ <widget href="ui/SingleDefaultPropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Single AbstractLayer" sectionFile="ui/SingleAbstractLayer.xwt">
+ <widget href="ui/SingleAbstractLayer.xwt#/"/>
+ </sections>
+ <sections name="Single StringToTypeInstanceMap" sectionFile="ui/SingleStringToTypeInstanceMap.xwt">
+ <widget href="ui/SingleStringToTypeInstanceMap.xwt#/"/>
+ </sections>
+ <sections name="Single Folder" sectionFile="ui/SingleFolder.xwt">
+ <widget href="ui/SingleFolder.xwt#/"/>
+ </sections>
+ <sections name="Single IntInstance" sectionFile="ui/SingleIntInstance.xwt">
+ <widget href="ui/SingleIntInstance.xwt#/"/>
+ </sections>
+ <sections name="Single BooleanInstance" sectionFile="ui/SingleBooleanInstance.xwt">
+ <widget href="ui/SingleBooleanInstance.xwt#/"/>
+ </sections>
+ <sections name="Single StringInstance" sectionFile="ui/SingleStringInstance.xwt">
+ <widget href="ui/SingleStringInstance.xwt#/"/>
+ </sections>
+ <sections name="Single IntType" sectionFile="ui/SingleIntType.xwt">
+ <widget href="ui/SingleIntType.xwt#/"/>
+ </sections>
+ <sections name="Single BooleanType" sectionFile="ui/SingleBooleanType.xwt">
+ <widget href="ui/SingleBooleanType.xwt#/"/>
+ </sections>
+ <sections name="Single StringType" sectionFile="ui/SingleStringType.xwt">
+ <widget href="ui/SingleStringType.xwt#/"/>
+ </sections>
+ <sections name="Single CustomType" sectionFile="ui/SingleCustomType.xwt">
+ <widget href="ui/SingleCustomType.xwt#/"/>
+ </sections>
+ <sections name="Single TopLayerOperator" sectionFile="ui/SingleTopLayerOperator.xwt">
+ <widget href="ui/SingleTopLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single StackedLayerOperator" sectionFile="ui/SingleStackedLayerOperator.xwt">
+ <widget href="ui/SingleStackedLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single CustomLayerOperator" sectionFile="ui/SingleCustomLayerOperator.xwt">
+ <widget href="ui/SingleCustomLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyIndex" sectionFile="ui/SinglePropertyIndex.xwt">
+ <widget href="ui/SinglePropertyIndex.xwt#/"/>
+ </sections>
+ <sections name="Single StringToPropertyIndexMap" sectionFile="ui/SingleStringToPropertyIndexMap.xwt">
+ <widget href="ui/SingleStringToPropertyIndexMap.xwt#/"/>
+ </sections>
+ <sections name="Single SimpleLayerDescriptor" sectionFile="ui/SingleSimpleLayerDescriptor.xwt">
+ <widget href="ui/SingleSimpleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single RegExpLayerDescriptor" sectionFile="ui/SingleRegExpLayerDescriptor.xwt">
+ <widget href="ui/SingleRegExpLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single NullInstance" sectionFile="ui/SingleNullInstance.xwt">
+ <widget href="ui/SingleNullInstance.xwt#/"/>
+ </sections>
+ <sections name="Single RegExpLayer" sectionFile="ui/SingleRegExpLayer.xwt">
+ <widget href="ui/SingleRegExpLayer.xwt#/"/>
+ </sections>
+ <sections name="Single Layer" sectionFile="ui/SingleLayer.xwt">
+ <widget href="ui/SingleLayer.xwt#/"/>
+ </sections>
+ <sections name="Single Color" sectionFile="ui/SingleColor.xwt">
+ <widget href="ui/SingleColor.xwt#/"/>
+ </sections>
+ <sections name="Single ColorInstance" sectionFile="ui/SingleColorInstance.xwt">
+ <widget href="ui/SingleColorInstance.xwt#/"/>
+ </sections>
+ <sections name="Single FillInstance" sectionFile="ui/SingleFillInstance.xwt">
+ <widget href="ui/SingleFillInstance.xwt#/"/>
+ </sections>
+ <sections name="Single Fill" sectionFile="ui/SingleFill.xwt">
+ <widget href="ui/SingleFill.xwt#/"/>
+ </sections>
+ <sections name="Single FillPropertySetter" sectionFile="ui/SingleFillPropertySetter.xwt">
+ <widget href="ui/SingleFillPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single IsValidPropertySetter" sectionFile="ui/SingleIsValidPropertySetter.xwt">
+ <widget href="ui/SingleIsValidPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single NullPropertySetter" sectionFile="ui/SingleNullPropertySetter.xwt">
+ <widget href="ui/SingleNullPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single LineType" sectionFile="ui/SingleLineType.xwt">
+ <widget href="ui/SingleLineType.xwt#/"/>
+ </sections>
+ <sections name="Single LineInstance" sectionFile="ui/SingleLineInstance.xwt">
+ <widget href="ui/SingleLineInstance.xwt#/"/>
+ </sections>
+ <sections name="Single LinePropertySetter" sectionFile="ui/SingleLinePropertySetter.xwt">
+ <widget href="ui/SingleLinePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single FontPropertySetter" sectionFile="ui/SingleFontPropertySetter.xwt">
+ <widget href="ui/SingleFontPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single FontInstance" sectionFile="ui/SingleFontInstance.xwt">
+ <widget href="ui/SingleFontInstance.xwt#/"/>
+ </sections>
+ <sections name="Single FontType" sectionFile="ui/SingleFontType.xwt">
+ <widget href="ui/SingleFontType.xwt#/"/>
+ </sections>
+ <sections name="Single IsVisiblePropertySetter" sectionFile="ui/SingleIsVisiblePropertySetter.xwt">
+ <widget href="ui/SingleIsVisiblePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single TopLayerOperatorDescriptor" sectionFile="ui/SingleTopLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleTopLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single StackedLayerOperatorDescriptor" sectionFile="ui/SingleStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single CustomPropertyOperator" sectionFile="ui/SingleCustomPropertyOperator.xwt">
+ <widget href="ui/SingleCustomPropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Single AndStackedLayerOperatorDescriptor" sectionFile="ui/SingleAndStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleAndStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single OrStackedLayerOperatorDescriptor" sectionFile="ui/SingleOrStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleOrStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single IsAbstractUmlSetter" sectionFile="ui/SingleIsAbstractUmlSetter.xwt">
+ <widget href="ui/SingleIsAbstractUmlSetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerNamedStyle" sectionFile="ui/MultipleLayerNamedStyle.xwt">
+ <widget href="ui/MultipleLayerNamedStyle.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayersStack" sectionFile="ui/MultipleLayersStack.xwt">
+ <widget href="ui/MultipleLayersStack.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerExpression" sectionFile="ui/MultipleLayerExpression.xwt">
+ <widget href="ui/MultipleLayerExpression.xwt#/"/>
+ </sections>
+ <sections name="Multiple ApplicationDependantElement" sectionFile="ui/MultipleApplicationDependantElement.xwt">
+ <widget href="ui/MultipleApplicationDependantElement.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayersStackApplication" sectionFile="ui/MultipleLayersStackApplication.xwt">
+ <widget href="ui/MultipleLayersStackApplication.xwt#/"/>
+ </sections>
+ <sections name="Multiple FolderElement" sectionFile="ui/MultipleFolderElement.xwt">
+ <widget href="ui/MultipleFolderElement.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerStackDescriptorRegistry" sectionFile="ui/MultipleLayerStackDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerStackDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyRegistry" sectionFile="ui/MultiplePropertyRegistry.xwt">
+ <widget href="ui/MultiplePropertyRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple Property" sectionFile="ui/MultipleProperty.xwt">
+ <widget href="ui/MultipleProperty.xwt#/"/>
+ </sections>
+ <sections name="Multiple Type" sectionFile="ui/MultipleType.xwt">
+ <widget href="ui/MultipleType.xwt#/"/>
+ </sections>
+ <sections name="Multiple Metamodel" sectionFile="ui/MultipleMetamodel.xwt">
+ <widget href="ui/MultipleMetamodel.xwt#/"/>
+ </sections>
+ <sections name="Multiple TypeInstance" sectionFile="ui/MultipleTypeInstance.xwt">
+ <widget href="ui/MultipleTypeInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple ComputePropertyValueCommandItf" sectionFile="ui/MultipleComputePropertyValueCommandItf.xwt">
+ <widget href="ui/MultipleComputePropertyValueCommandItf.xwt#/"/>
+ </sections>
+ <sections name="Multiple TypeRegistry" sectionFile="ui/MultipleTypeRegistry.xwt">
+ <widget href="ui/MultipleTypeRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToTypeMap" sectionFile="ui/MultipleStringToTypeMap.xwt">
+ <widget href="ui/MultipleStringToTypeMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerDescriptorRegistry" sectionFile="ui/MultipleLayerDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerDescriptor" sectionFile="ui/MultipleLayerDescriptor.xwt">
+ <widget href="ui/MultipleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerApplicationFactory" sectionFile="ui/MultipleLayerApplicationFactory.xwt">
+ <widget href="ui/MultipleLayerApplicationFactory.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertySetterRegistry" sectionFile="ui/MultiplePropertySetterRegistry.xwt">
+ <widget href="ui/MultiplePropertySetterRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertySetter" sectionFile="ui/MultiplePropertySetter.xwt">
+ <widget href="ui/MultiplePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToPropertySetter" sectionFile="ui/MultipleStringToPropertySetter.xwt">
+ <widget href="ui/MultipleStringToPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerOperatorDescriptorRegistry" sectionFile="ui/MultipleLayerOperatorDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerOperatorDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerOperatorDescriptor" sectionFile="ui/MultipleLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyOperator" sectionFile="ui/MultiplePropertyOperator.xwt">
+ <widget href="ui/MultiplePropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple AbstractLayerOperator" sectionFile="ui/MultipleAbstractLayerOperator.xwt">
+ <widget href="ui/MultipleAbstractLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerOperator" sectionFile="ui/MultipleLayerOperator.xwt">
+ <widget href="ui/MultipleLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple DefaultPropertyOperator" sectionFile="ui/MultipleDefaultPropertyOperator.xwt">
+ <widget href="ui/MultipleDefaultPropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple AbstractLayer" sectionFile="ui/MultipleAbstractLayer.xwt">
+ <widget href="ui/MultipleAbstractLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToTypeInstanceMap" sectionFile="ui/MultipleStringToTypeInstanceMap.xwt">
+ <widget href="ui/MultipleStringToTypeInstanceMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple Folder" sectionFile="ui/MultipleFolder.xwt">
+ <widget href="ui/MultipleFolder.xwt#/"/>
+ </sections>
+ <sections name="Multiple IntInstance" sectionFile="ui/MultipleIntInstance.xwt">
+ <widget href="ui/MultipleIntInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple BooleanInstance" sectionFile="ui/MultipleBooleanInstance.xwt">
+ <widget href="ui/MultipleBooleanInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringInstance" sectionFile="ui/MultipleStringInstance.xwt">
+ <widget href="ui/MultipleStringInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple IntType" sectionFile="ui/MultipleIntType.xwt">
+ <widget href="ui/MultipleIntType.xwt#/"/>
+ </sections>
+ <sections name="Multiple BooleanType" sectionFile="ui/MultipleBooleanType.xwt">
+ <widget href="ui/MultipleBooleanType.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringType" sectionFile="ui/MultipleStringType.xwt">
+ <widget href="ui/MultipleStringType.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomType" sectionFile="ui/MultipleCustomType.xwt">
+ <widget href="ui/MultipleCustomType.xwt#/"/>
+ </sections>
+ <sections name="Multiple TopLayerOperator" sectionFile="ui/MultipleTopLayerOperator.xwt">
+ <widget href="ui/MultipleTopLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple StackedLayerOperator" sectionFile="ui/MultipleStackedLayerOperator.xwt">
+ <widget href="ui/MultipleStackedLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomLayerOperator" sectionFile="ui/MultipleCustomLayerOperator.xwt">
+ <widget href="ui/MultipleCustomLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyIndex" sectionFile="ui/MultiplePropertyIndex.xwt">
+ <widget href="ui/MultiplePropertyIndex.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToPropertyIndexMap" sectionFile="ui/MultipleStringToPropertyIndexMap.xwt">
+ <widget href="ui/MultipleStringToPropertyIndexMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple SimpleLayerDescriptor" sectionFile="ui/MultipleSimpleLayerDescriptor.xwt">
+ <widget href="ui/MultipleSimpleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple RegExpLayerDescriptor" sectionFile="ui/MultipleRegExpLayerDescriptor.xwt">
+ <widget href="ui/MultipleRegExpLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple NullInstance" sectionFile="ui/MultipleNullInstance.xwt">
+ <widget href="ui/MultipleNullInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple RegExpLayer" sectionFile="ui/MultipleRegExpLayer.xwt">
+ <widget href="ui/MultipleRegExpLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple Layer" sectionFile="ui/MultipleLayer.xwt">
+ <widget href="ui/MultipleLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple Color" sectionFile="ui/MultipleColor.xwt">
+ <widget href="ui/MultipleColor.xwt#/"/>
+ </sections>
+ <sections name="Multiple ColorInstance" sectionFile="ui/MultipleColorInstance.xwt">
+ <widget href="ui/MultipleColorInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple FillInstance" sectionFile="ui/MultipleFillInstance.xwt">
+ <widget href="ui/MultipleFillInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple Fill" sectionFile="ui/MultipleFill.xwt">
+ <widget href="ui/MultipleFill.xwt#/"/>
+ </sections>
+ <sections name="Multiple FillPropertySetter" sectionFile="ui/MultipleFillPropertySetter.xwt">
+ <widget href="ui/MultipleFillPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsValidPropertySetter" sectionFile="ui/MultipleIsValidPropertySetter.xwt">
+ <widget href="ui/MultipleIsValidPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple NullPropertySetter" sectionFile="ui/MultipleNullPropertySetter.xwt">
+ <widget href="ui/MultipleNullPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LineType" sectionFile="ui/MultipleLineType.xwt">
+ <widget href="ui/MultipleLineType.xwt#/"/>
+ </sections>
+ <sections name="Multiple LineInstance" sectionFile="ui/MultipleLineInstance.xwt">
+ <widget href="ui/MultipleLineInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple LinePropertySetter" sectionFile="ui/MultipleLinePropertySetter.xwt">
+ <widget href="ui/MultipleLinePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontPropertySetter" sectionFile="ui/MultipleFontPropertySetter.xwt">
+ <widget href="ui/MultipleFontPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontInstance" sectionFile="ui/MultipleFontInstance.xwt">
+ <widget href="ui/MultipleFontInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontType" sectionFile="ui/MultipleFontType.xwt">
+ <widget href="ui/MultipleFontType.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsVisiblePropertySetter" sectionFile="ui/MultipleIsVisiblePropertySetter.xwt">
+ <widget href="ui/MultipleIsVisiblePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple TopLayerOperatorDescriptor" sectionFile="ui/MultipleTopLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleTopLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple StackedLayerOperatorDescriptor" sectionFile="ui/MultipleStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomPropertyOperator" sectionFile="ui/MultipleCustomPropertyOperator.xwt">
+ <widget href="ui/MultipleCustomPropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple AndStackedLayerOperatorDescriptor" sectionFile="ui/MultipleAndStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleAndStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple OrStackedLayerOperatorDescriptor" sectionFile="ui/MultipleOrStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleOrStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsAbstractUmlSetter" sectionFile="ui/MultipleIsAbstractUmlSetter.xwt">
+ <widget href="ui/MultipleIsAbstractUmlSetter.xwt#/"/>
+ </sections>
+ </tabs>
+ <views name="Single LayerNamedStyle" sections="//@tabs.0/@sections.0" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerNamedStyle">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayersStack" sections="//@tabs.0/@sections.1" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStack">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+ </constraints>
+ </views>
+ <views name="Single LayerExpression" sections="//@tabs.0/@sections.2" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerExpression">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+ </constraints>
+ </views>
+ <views name="Single ApplicationDependantElement" sections="//@tabs.0/@sections.3" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleApplicationDependantElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+ </constraints>
+ </views>
+ <views name="Single LayersStackApplication" sections="//@tabs.0/@sections.4" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStackApplication">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FolderElement" sections="//@tabs.0/@sections.5" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolderElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+ </constraints>
+ </views>
+ <views name="Single LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.6" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerStackDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyRegistry" sections="//@tabs.0/@sections.7" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Property" sections="//@tabs.0/@sections.8" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleProperty">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+ </constraints>
+ </views>
+ <views name="Single Type" sections="//@tabs.0/@sections.9" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+ </constraints>
+ </views>
+ <views name="Single Metamodel" sections="//@tabs.0/@sections.10" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleMetamodel">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single TypeInstance" sections="//@tabs.0/@sections.11" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.12" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleComputePropertyValueCommandItf">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single TypeRegistry" sections="//@tabs.0/@sections.13" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringToTypeMap" sections="//@tabs.0/@sections.14" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+ </constraints>
+ </views>
+ <views name="Single LayerDescriptorRegistry" sections="//@tabs.0/@sections.15" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerDescriptor" sections="//@tabs.0/@sections.16" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerApplicationFactory" sections="//@tabs.0/@sections.17" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerApplicationFactory">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+ </constraints>
+ </views>
+ <views name="Single PropertySetterRegistry" sections="//@tabs.0/@sections.18" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetterRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single PropertySetter" sections="//@tabs.0/@sections.19" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringToPropertySetter" sections="//@tabs.0/@sections.20" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerOperatorDescriptorRegistry" sections="//@tabs.0/@sections.21" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperatorDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single LayerOperatorDescriptor" sections="//@tabs.0/@sections.22" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyOperator" sections="//@tabs.0/@sections.23" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single AbstractLayerOperator" sections="//@tabs.0/@sections.24" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single LayerOperator" sections="//@tabs.0/@sections.25" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single DefaultPropertyOperator" sections="//@tabs.0/@sections.26" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleDefaultPropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="DefaultPropertyOperator"/>
+ </constraints>
+ </views>
+ <views name="Single AbstractLayer" sections="//@tabs.0/@sections.27" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+ </constraints>
+ </views>
+ <views name="Single StringToTypeInstanceMap" sections="//@tabs.0/@sections.28" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeInstanceMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Folder" sections="//@tabs.0/@sections.29" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolder">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+ </constraints>
+ </views>
+ <views name="Single IntInstance" sections="//@tabs.0/@sections.30" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single BooleanInstance" sections="//@tabs.0/@sections.31" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+ </constraints>
+ </views>
+ <views name="Single StringInstance" sections="//@tabs.0/@sections.32" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+ </constraints>
+ </views>
+ <views name="Single IntType" sections="//@tabs.0/@sections.33" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+ </constraints>
+ </views>
+ <views name="Single BooleanType" sections="//@tabs.0/@sections.34" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringType" sections="//@tabs.0/@sections.35" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+ </constraints>
+ </views>
+ <views name="Single CustomType" sections="//@tabs.0/@sections.36" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single TopLayerOperator" sections="//@tabs.0/@sections.37" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single StackedLayerOperator" sections="//@tabs.0/@sections.38" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single CustomLayerOperator" sections="//@tabs.0/@sections.39" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyIndex" sections="//@tabs.0/@sections.40" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyIndex">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringToPropertyIndexMap" sections="//@tabs.0/@sections.41" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertyIndexMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single SimpleLayerDescriptor" sections="//@tabs.0/@sections.42" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleSimpleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single RegExpLayerDescriptor" sections="//@tabs.0/@sections.43" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single NullInstance" sections="//@tabs.0/@sections.44" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+ </constraints>
+ </views>
+ <views name="Single RegExpLayer" sections="//@tabs.0/@sections.45" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Layer" sections="//@tabs.0/@sections.46" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Color" sections="//@tabs.0/@sections.47" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+ </constraints>
+ </views>
+ <views name="Single ColorInstance" sections="//@tabs.0/@sections.48" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColorInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FillInstance" sections="//@tabs.0/@sections.49" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+ </constraints>
+ </views>
+ <views name="Single Fill" sections="//@tabs.0/@sections.50" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFill">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+ </constraints>
+ </views>
+ <views name="Single FillPropertySetter" sections="//@tabs.0/@sections.51" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single IsValidPropertySetter" sections="//@tabs.0/@sections.52" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsValidPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single NullPropertySetter" sections="//@tabs.0/@sections.53" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single LineType" sections="//@tabs.0/@sections.54" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LineInstance" sections="//@tabs.0/@sections.55" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LinePropertySetter" sections="//@tabs.0/@sections.56" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLinePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FontPropertySetter" sections="//@tabs.0/@sections.57" automaticContext="true" datacontexts="//@dataContexts.0/@elements.57">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single FontInstance" sections="//@tabs.0/@sections.58" automaticContext="true" datacontexts="//@dataContexts.0/@elements.58">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FontType" sections="//@tabs.0/@sections.59" automaticContext="true" datacontexts="//@dataContexts.0/@elements.59">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+ </constraints>
+ </views>
+ <views name="Single IsVisiblePropertySetter" sections="//@tabs.0/@sections.60" automaticContext="true" datacontexts="//@dataContexts.0/@elements.60">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsVisiblePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single TopLayerOperatorDescriptor" sections="//@tabs.0/@sections.61" automaticContext="true" datacontexts="//@dataContexts.0/@elements.61">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.62" automaticContext="true" datacontexts="//@dataContexts.0/@elements.62">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperatorDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single CustomPropertyOperator" sections="//@tabs.0/@sections.63" automaticContext="true" datacontexts="//@dataContexts.0/@elements.63">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomPropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomPropertyOperator"/>
+ </constraints>
+ </views>
+ <views name="Single AndStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.64" automaticContext="true" datacontexts="//@dataContexts.0/@elements.64">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAndStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AndStackedLayerOperatorDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single OrStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.65" automaticContext="true" datacontexts="//@dataContexts.0/@elements.65">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleOrStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="OrStackedLayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IsAbstractUmlSetter" sections="//@tabs.0/@sections.66" automaticContext="true" datacontexts="//@dataContexts.0/@elements.66">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsAbstractUmlSetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsAbstractUmlSetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerNamedStyle" sections="//@tabs.0/@sections.67" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerNamedStyle">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayersStack" sections="//@tabs.0/@sections.68" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStack">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerExpression" sections="//@tabs.0/@sections.69" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerExpression">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ApplicationDependantElement" sections="//@tabs.0/@sections.70" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleApplicationDependantElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayersStackApplication" sections="//@tabs.0/@sections.71" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStackApplication">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FolderElement" sections="//@tabs.0/@sections.72" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolderElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.73" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerStackDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyRegistry" sections="//@tabs.0/@sections.74" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Property" sections="//@tabs.0/@sections.75" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleProperty">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Type" sections="//@tabs.0/@sections.76" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Metamodel" sections="//@tabs.0/@sections.77" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleMetamodel">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TypeInstance" sections="//@tabs.0/@sections.78" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.79" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleComputePropertyValueCommandItf">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TypeRegistry" sections="//@tabs.0/@sections.80" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToTypeMap" sections="//@tabs.0/@sections.81" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerDescriptorRegistry" sections="//@tabs.0/@sections.82" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerDescriptor" sections="//@tabs.0/@sections.83" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerApplicationFactory" sections="//@tabs.0/@sections.84" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerApplicationFactory">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertySetterRegistry" sections="//@tabs.0/@sections.85" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetterRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertySetter" sections="//@tabs.0/@sections.86" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToPropertySetter" sections="//@tabs.0/@sections.87" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerOperatorDescriptorRegistry" sections="//@tabs.0/@sections.88" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperatorDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerOperatorDescriptor" sections="//@tabs.0/@sections.89" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyOperator" sections="//@tabs.0/@sections.90" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AbstractLayerOperator" sections="//@tabs.0/@sections.91" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerOperator" sections="//@tabs.0/@sections.92" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple DefaultPropertyOperator" sections="//@tabs.0/@sections.93" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleDefaultPropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="DefaultPropertyOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AbstractLayer" sections="//@tabs.0/@sections.94" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToTypeInstanceMap" sections="//@tabs.0/@sections.95" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeInstanceMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Folder" sections="//@tabs.0/@sections.96" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolder">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IntInstance" sections="//@tabs.0/@sections.97" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple BooleanInstance" sections="//@tabs.0/@sections.98" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringInstance" sections="//@tabs.0/@sections.99" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IntType" sections="//@tabs.0/@sections.100" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple BooleanType" sections="//@tabs.0/@sections.101" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringType" sections="//@tabs.0/@sections.102" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomType" sections="//@tabs.0/@sections.103" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TopLayerOperator" sections="//@tabs.0/@sections.104" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StackedLayerOperator" sections="//@tabs.0/@sections.105" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomLayerOperator" sections="//@tabs.0/@sections.106" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyIndex" sections="//@tabs.0/@sections.107" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyIndex">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToPropertyIndexMap" sections="//@tabs.0/@sections.108" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertyIndexMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple SimpleLayerDescriptor" sections="//@tabs.0/@sections.109" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleSimpleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple RegExpLayerDescriptor" sections="//@tabs.0/@sections.110" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple NullInstance" sections="//@tabs.0/@sections.111" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple RegExpLayer" sections="//@tabs.0/@sections.112" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Layer" sections="//@tabs.0/@sections.113" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Color" sections="//@tabs.0/@sections.114" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ColorInstance" sections="//@tabs.0/@sections.115" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColorInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FillInstance" sections="//@tabs.0/@sections.116" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Fill" sections="//@tabs.0/@sections.117" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFill">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FillPropertySetter" sections="//@tabs.0/@sections.118" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsValidPropertySetter" sections="//@tabs.0/@sections.119" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsValidPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple NullPropertySetter" sections="//@tabs.0/@sections.120" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LineType" sections="//@tabs.0/@sections.121" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LineInstance" sections="//@tabs.0/@sections.122" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LinePropertySetter" sections="//@tabs.0/@sections.123" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLinePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontPropertySetter" sections="//@tabs.0/@sections.124" automaticContext="true" datacontexts="//@dataContexts.0/@elements.57">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontInstance" sections="//@tabs.0/@sections.125" automaticContext="true" datacontexts="//@dataContexts.0/@elements.58">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontType" sections="//@tabs.0/@sections.126" automaticContext="true" datacontexts="//@dataContexts.0/@elements.59">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsVisiblePropertySetter" sections="//@tabs.0/@sections.127" automaticContext="true" datacontexts="//@dataContexts.0/@elements.60">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsVisiblePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TopLayerOperatorDescriptor" sections="//@tabs.0/@sections.128" automaticContext="true" datacontexts="//@dataContexts.0/@elements.61">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperatorDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.129" automaticContext="true" datacontexts="//@dataContexts.0/@elements.62">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomPropertyOperator" sections="//@tabs.0/@sections.130" automaticContext="true" datacontexts="//@dataContexts.0/@elements.63">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomPropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomPropertyOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AndStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.131" automaticContext="true" datacontexts="//@dataContexts.0/@elements.64">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAndStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AndStackedLayerOperatorDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple OrStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.132" automaticContext="true" datacontexts="//@dataContexts.0/@elements.65">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleOrStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="OrStackedLayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsAbstractUmlSetter" sections="//@tabs.0/@sections.133" automaticContext="true" datacontexts="//@dataContexts.0/@elements.66">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsAbstractUmlSetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsAbstractUmlSetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <dataContexts name="layers" label="layers">
+ <elements name="LayerNamedStyle">
+ <properties name="layersStack" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="LayersStack">
+ <properties name="layers" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="diagram" type="Reference"/>
+ </elements>
+ <elements name="LayerExpression" supertypes="//@dataContexts.0/@elements.3">
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="isLayerEnabledInternal" type="Boolean"/>
+ <properties name="isLayerEnabled" type="Boolean"/>
+ </elements>
+ <elements name="ApplicationDependantElement">
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="LayersStackApplication" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="layersStacks" type="Reference" multiplicity="-1"/>
+ <properties name="layerStackRegistry" type="Reference"/>
+ <properties name="propertyRegistry" type="Reference"/>
+ <properties name="layerDescriptorRegistry" type="Reference"/>
+ <properties name="factory" type="Reference"/>
+ <properties name="propertySetterRegistry" type="Reference"/>
+ <properties name="layerOperatorDescriptorRegistry" type="Reference"/>
+ </elements>
+ <elements name="FolderElement"/>
+ <elements name="LayerStackDescriptorRegistry"/>
+ <elements name="PropertyRegistry">
+ <properties name="properties" type="Reference" multiplicity="-1"/>
+ <properties name="typeRegistry" type="Reference"/>
+ <properties name="propertiesCount" type="Integer"/>
+ </elements>
+ <elements name="Property" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="type" type="Reference"/>
+ <properties name="defaultValue" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="index" type="Integer"/>
+ </elements>
+ <elements name="Type" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="metamodel" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ </elements>
+ <elements name="Metamodel" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="nsuri"/>
+ <properties name="pluginID"/>
+ <properties name="ePackageInstanceName"/>
+ <properties name="isTypeValid" type="Boolean"/>
+ </elements>
+ <elements name="TypeInstance" supertypes="//@dataContexts.0/@elements.12"/>
+ <elements name="ComputePropertyValueCommandItf"/>
+ <elements name="TypeRegistry">
+ <properties name="types" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="StringToTypeMap">
+ <properties name="value" type="Reference"/>
+ <properties name="key"/>
+ </elements>
+ <elements name="LayerDescriptorRegistry">
+ <properties name="layerDescriptors" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="LayerDescriptor">
+ <properties name="propertyRegistry" type="Reference"/>
+ </elements>
+ <elements name="LayerApplicationFactory">
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="PropertySetterRegistry">
+ <properties name="propertySetters" type="Reference" multiplicity="-1"/>
+ <properties name="setterMap" type="Reference" multiplicity="-1"/>
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="PropertySetter">
+ <properties name="property" type="Reference"/>
+ <properties name="propertyName"/>
+ </elements>
+ <elements name="StringToPropertySetter">
+ <properties name="key"/>
+ <properties name="value" type="Reference"/>
+ </elements>
+ <elements name="LayerOperatorDescriptorRegistry">
+ <properties name="descriptors" type="Reference" multiplicity="-1"/>
+ <properties name="propertyOperators" type="Reference" multiplicity="-1"/>
+ <properties name="propertyCollectionSize" type="Integer"/>
+ <properties name="defaultOperator" type="Reference"/>
+ </elements>
+ <elements name="LayerOperatorDescriptor">
+ <properties name="propertyOperators" type="Reference" multiplicity="-1"/>
+ <properties name="name"/>
+ </elements>
+ <elements name="PropertyOperator">
+ <properties name="name"/>
+ </elements>
+ <elements name="AbstractLayerOperator" supertypes="//@dataContexts.0/@elements.25">
+ <properties name="layerOperatorDescriptor" type="Reference"/>
+ <properties name="layerOperatorDescriptorName"/>
+ </elements>
+ <elements name="LayerOperator" supertypes="//@dataContexts.0/@elements.2">
+ <properties name="layers" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="DefaultPropertyOperator" supertypes="//@dataContexts.0/@elements.23"/>
+ <elements name="AbstractLayer" supertypes="//@dataContexts.0/@elements.2">
+ <properties name="propertyValues" type="Reference" multiplicity="-1"/>
+ <properties name="propertyValueMap" type="Reference" multiplicity="-1"/>
+ <properties name="layerDescriptor" type="Reference"/>
+ <properties name="views" type="Reference" multiplicity="-1"/>
+ <properties name="attachedProperties" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="StringToTypeInstanceMap">
+ <properties name="key"/>
+ <properties name="value" type="Reference"/>
+ </elements>
+ <elements name="Folder" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="elements" type="Reference" multiplicity="-1"/>
+ <properties name="name"/>
+ </elements>
+ <elements name="IntInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Integer"/>
+ </elements>
+ <elements name="BooleanInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Boolean"/>
+ </elements>
+ <elements name="StringInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value"/>
+ </elements>
+ <elements name="IntType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="BooleanType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="StringType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="CustomType" supertypes="//@dataContexts.0/@elements.9">
+ <properties name="classifier"/>
+ </elements>
+ <elements name="TopLayerOperator" supertypes="//@dataContexts.0/@elements.24"/>
+ <elements name="StackedLayerOperator" supertypes="//@dataContexts.0/@elements.24"/>
+ <elements name="CustomLayerOperator" supertypes="//@dataContexts.0/@elements.25"/>
+ <elements name="PropertyIndex">
+ <properties name="property" type="Reference"/>
+ <properties name="index" type="Integer"/>
+ </elements>
+ <elements name="StringToPropertyIndexMap">
+ <properties name="value" type="Reference"/>
+ <properties name="key"/>
+ </elements>
+ <elements name="SimpleLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+ <elements name="RegExpLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+ <elements name="NullInstance" supertypes="//@dataContexts.0/@elements.11"/>
+ <elements name="RegExpLayer" supertypes="//@dataContexts.0/@elements.27">
+ <properties name="expr"/>
+ <properties name="language"/>
+ </elements>
+ <elements name="Layer" supertypes="//@dataContexts.0/@elements.27"/>
+ <elements name="Color" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="ColorInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Integer"/>
+ </elements>
+ <elements name="FillInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="transparency" type="Integer"/>
+ <properties name="fillColor" type="Reference"/>
+ </elements>
+ <elements name="Fill" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="FillPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="IsValidPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="NullPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="LineType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="LineInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="lineColor" type="Integer"/>
+ <properties name="lineWith" type="Integer"/>
+ </elements>
+ <elements name="LinePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="FontPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="FontInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="fontColor" type="Integer"/>
+ <properties name="fontName"/>
+ <properties name="fontHeigh" type="Integer"/>
+ <properties name="bold" type="Boolean"/>
+ </elements>
+ <elements name="FontType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="IsVisiblePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="TopLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.22"/>
+ <elements name="StackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.22"/>
+ <elements name="CustomPropertyOperator" supertypes="//@dataContexts.0/@elements.23">
+ <properties name="classname"/>
+ <properties name="operatorInstance"/>
+ <properties name="classBundleID"/>
+ </elements>
+ <elements name="AndStackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.62"/>
+ <elements name="OrStackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.62"/>
+ <elements name="IsAbstractUmlSetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@modelElementFactories.0"/>
+ </dataContexts>
+</contexts:Context>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties.ctx b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties.ctx
new file mode 100644
index 00000000000..86535e3fe31
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/properties.ctx
@@ -0,0 +1,1517 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" name="layers">
+ <tabs label="layers" id="layers" priority="100">
+ <sections name="Single LayerNamedStyle" sectionFile="ui/SingleLayerNamedStyle.xwt">
+ <widget href="ui/SingleLayerNamedStyle.xwt#/"/>
+ </sections>
+ <sections name="Single LayersStack" sectionFile="ui/SingleLayersStack.xwt">
+ <widget href="ui/SingleLayersStack.xwt#/"/>
+ </sections>
+ <sections name="Single LayerExpression" sectionFile="ui/SingleLayerExpression.xwt">
+ <widget href="ui/SingleLayerExpression.xwt#/"/>
+ </sections>
+ <sections name="Single ApplicationDependantElement" sectionFile="ui/SingleApplicationDependantElement.xwt">
+ <widget href="ui/SingleApplicationDependantElement.xwt#/"/>
+ </sections>
+ <sections name="Single LayersStackApplication" sectionFile="ui/SingleLayersStackApplication.xwt">
+ <widget href="ui/SingleLayersStackApplication.xwt#/"/>
+ </sections>
+ <sections name="Single FolderElement" sectionFile="ui/SingleFolderElement.xwt">
+ <widget href="ui/SingleFolderElement.xwt#/"/>
+ </sections>
+ <sections name="Single LayerStackDescriptorRegistry" sectionFile="ui/SingleLayerStackDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerStackDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyRegistry" sectionFile="ui/SinglePropertyRegistry.xwt">
+ <widget href="ui/SinglePropertyRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single Property" sectionFile="ui/SingleProperty.xwt">
+ <widget href="ui/SingleProperty.xwt#/"/>
+ </sections>
+ <sections name="Single Type" sectionFile="ui/SingleType.xwt">
+ <widget href="ui/SingleType.xwt#/"/>
+ </sections>
+ <sections name="Single Metamodel" sectionFile="ui/SingleMetamodel.xwt">
+ <widget href="ui/SingleMetamodel.xwt#/"/>
+ </sections>
+ <sections name="Single TypeInstance" sectionFile="ui/SingleTypeInstance.xwt">
+ <widget href="ui/SingleTypeInstance.xwt#/"/>
+ </sections>
+ <sections name="Single ComputePropertyValueCommandItf" sectionFile="ui/SingleComputePropertyValueCommandItf.xwt">
+ <widget href="ui/SingleComputePropertyValueCommandItf.xwt#/"/>
+ </sections>
+ <sections name="Single TypeRegistry" sectionFile="ui/SingleTypeRegistry.xwt">
+ <widget href="ui/SingleTypeRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single StringToTypeMap" sectionFile="ui/SingleStringToTypeMap.xwt">
+ <widget href="ui/SingleStringToTypeMap.xwt#/"/>
+ </sections>
+ <sections name="Single LayerDescriptorRegistry" sectionFile="ui/SingleLayerDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single LayerDescriptor" sectionFile="ui/SingleLayerDescriptor.xwt">
+ <widget href="ui/SingleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single LayerApplicationFactory" sectionFile="ui/SingleLayerApplicationFactory.xwt">
+ <widget href="ui/SingleLayerApplicationFactory.xwt#/"/>
+ </sections>
+ <sections name="Single PropertySetterRegistry" sectionFile="ui/SinglePropertySetterRegistry.xwt">
+ <widget href="ui/SinglePropertySetterRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single PropertySetter" sectionFile="ui/SinglePropertySetter.xwt">
+ <widget href="ui/SinglePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single StringToPropertySetter" sectionFile="ui/SingleStringToPropertySetter.xwt">
+ <widget href="ui/SingleStringToPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single LayerOperatorDescriptorRegistry" sectionFile="ui/SingleLayerOperatorDescriptorRegistry.xwt">
+ <widget href="ui/SingleLayerOperatorDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Single LayerOperatorDescriptor" sectionFile="ui/SingleLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyOperator" sectionFile="ui/SinglePropertyOperator.xwt">
+ <widget href="ui/SinglePropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Single AbstractLayerOperator" sectionFile="ui/SingleAbstractLayerOperator.xwt">
+ <widget href="ui/SingleAbstractLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single LayerOperator" sectionFile="ui/SingleLayerOperator.xwt">
+ <widget href="ui/SingleLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single DefaultPropertyOperator" sectionFile="ui/SingleDefaultPropertyOperator.xwt">
+ <widget href="ui/SingleDefaultPropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Single AbstractLayer" sectionFile="ui/SingleAbstractLayer.xwt">
+ <widget href="ui/SingleAbstractLayer.xwt#/"/>
+ </sections>
+ <sections name="Single StringToTypeInstanceMap" sectionFile="ui/SingleStringToTypeInstanceMap.xwt">
+ <widget href="ui/SingleStringToTypeInstanceMap.xwt#/"/>
+ </sections>
+ <sections name="Single Folder" sectionFile="ui/SingleFolder.xwt">
+ <widget href="ui/SingleFolder.xwt#/"/>
+ </sections>
+ <sections name="Single IntInstance" sectionFile="ui/SingleIntInstance.xwt">
+ <widget href="ui/SingleIntInstance.xwt#/"/>
+ </sections>
+ <sections name="Single BooleanInstance" sectionFile="ui/SingleBooleanInstance.xwt">
+ <widget href="ui/SingleBooleanInstance.xwt#/"/>
+ </sections>
+ <sections name="Single StringInstance" sectionFile="ui/SingleStringInstance.xwt">
+ <widget href="ui/SingleStringInstance.xwt#/"/>
+ </sections>
+ <sections name="Single IntType" sectionFile="ui/SingleIntType.xwt">
+ <widget href="ui/SingleIntType.xwt#/"/>
+ </sections>
+ <sections name="Single BooleanType" sectionFile="ui/SingleBooleanType.xwt">
+ <widget href="ui/SingleBooleanType.xwt#/"/>
+ </sections>
+ <sections name="Single StringType" sectionFile="ui/SingleStringType.xwt">
+ <widget href="ui/SingleStringType.xwt#/"/>
+ </sections>
+ <sections name="Single CustomType" sectionFile="ui/SingleCustomType.xwt">
+ <widget href="ui/SingleCustomType.xwt#/"/>
+ </sections>
+ <sections name="Single TopLayerOperator" sectionFile="ui/SingleTopLayerOperator.xwt">
+ <widget href="ui/SingleTopLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single StackedLayerOperator" sectionFile="ui/SingleStackedLayerOperator.xwt">
+ <widget href="ui/SingleStackedLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single CustomLayerOperator" sectionFile="ui/SingleCustomLayerOperator.xwt">
+ <widget href="ui/SingleCustomLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Single PropertyIndex" sectionFile="ui/SinglePropertyIndex.xwt">
+ <widget href="ui/SinglePropertyIndex.xwt#/"/>
+ </sections>
+ <sections name="Single StringToPropertyIndexMap" sectionFile="ui/SingleStringToPropertyIndexMap.xwt">
+ <widget href="ui/SingleStringToPropertyIndexMap.xwt#/"/>
+ </sections>
+ <sections name="Single SimpleLayerDescriptor" sectionFile="ui/SingleSimpleLayerDescriptor.xwt">
+ <widget href="ui/SingleSimpleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single RegExpLayerDescriptor" sectionFile="ui/SingleRegExpLayerDescriptor.xwt">
+ <widget href="ui/SingleRegExpLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single NullInstance" sectionFile="ui/SingleNullInstance.xwt">
+ <widget href="ui/SingleNullInstance.xwt#/"/>
+ </sections>
+ <sections name="Single RegExpLayer" sectionFile="ui/SingleRegExpLayer.xwt">
+ <widget href="ui/SingleRegExpLayer.xwt#/"/>
+ </sections>
+ <sections name="Single Layer" sectionFile="ui/SingleLayer.xwt">
+ <widget href="ui/SingleLayer.xwt#/"/>
+ </sections>
+ <sections name="Single Color" sectionFile="ui/SingleColor.xwt">
+ <widget href="ui/SingleColor.xwt#/"/>
+ </sections>
+ <sections name="Single ColorInstance" sectionFile="ui/SingleColorInstance.xwt">
+ <widget href="ui/SingleColorInstance.xwt#/"/>
+ </sections>
+ <sections name="Single FillInstance" sectionFile="ui/SingleFillInstance.xwt">
+ <widget href="ui/SingleFillInstance.xwt#/"/>
+ </sections>
+ <sections name="Single Fill" sectionFile="ui/SingleFill.xwt">
+ <widget href="ui/SingleFill.xwt#/"/>
+ </sections>
+ <sections name="Single FillPropertySetter" sectionFile="ui/SingleFillPropertySetter.xwt">
+ <widget href="ui/SingleFillPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single IsValidPropertySetter" sectionFile="ui/SingleIsValidPropertySetter.xwt">
+ <widget href="ui/SingleIsValidPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single NullPropertySetter" sectionFile="ui/SingleNullPropertySetter.xwt">
+ <widget href="ui/SingleNullPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single LineType" sectionFile="ui/SingleLineType.xwt">
+ <widget href="ui/SingleLineType.xwt#/"/>
+ </sections>
+ <sections name="Single LineInstance" sectionFile="ui/SingleLineInstance.xwt">
+ <widget href="ui/SingleLineInstance.xwt#/"/>
+ </sections>
+ <sections name="Single LinePropertySetter" sectionFile="ui/SingleLinePropertySetter.xwt">
+ <widget href="ui/SingleLinePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single FontPropertySetter" sectionFile="ui/SingleFontPropertySetter.xwt">
+ <widget href="ui/SingleFontPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single FontInstance" sectionFile="ui/SingleFontInstance.xwt">
+ <widget href="ui/SingleFontInstance.xwt#/"/>
+ </sections>
+ <sections name="Single FontType" sectionFile="ui/SingleFontType.xwt">
+ <widget href="ui/SingleFontType.xwt#/"/>
+ </sections>
+ <sections name="Single IsVisiblePropertySetter" sectionFile="ui/SingleIsVisiblePropertySetter.xwt">
+ <widget href="ui/SingleIsVisiblePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Single TopLayerOperatorDescriptor" sectionFile="ui/SingleTopLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleTopLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single StackedLayerOperatorDescriptor" sectionFile="ui/SingleStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single CustomPropertyOperator" sectionFile="ui/SingleCustomPropertyOperator.xwt">
+ <widget href="ui/SingleCustomPropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Single AndStackedLayerOperatorDescriptor" sectionFile="ui/SingleAndStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleAndStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single OrStackedLayerOperatorDescriptor" sectionFile="ui/SingleOrStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/SingleOrStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Single IsAbstractUmlSetter" sectionFile="ui/SingleIsAbstractUmlSetter.xwt">
+ <widget href="ui/SingleIsAbstractUmlSetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerNamedStyle" sectionFile="ui/MultipleLayerNamedStyle.xwt">
+ <widget href="ui/MultipleLayerNamedStyle.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayersStack" sectionFile="ui/MultipleLayersStack.xwt">
+ <widget href="ui/MultipleLayersStack.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerExpression" sectionFile="ui/MultipleLayerExpression.xwt">
+ <widget href="ui/MultipleLayerExpression.xwt#/"/>
+ </sections>
+ <sections name="Multiple ApplicationDependantElement" sectionFile="ui/MultipleApplicationDependantElement.xwt">
+ <widget href="ui/MultipleApplicationDependantElement.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayersStackApplication" sectionFile="ui/MultipleLayersStackApplication.xwt">
+ <widget href="ui/MultipleLayersStackApplication.xwt#/"/>
+ </sections>
+ <sections name="Multiple FolderElement" sectionFile="ui/MultipleFolderElement.xwt">
+ <widget href="ui/MultipleFolderElement.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerStackDescriptorRegistry" sectionFile="ui/MultipleLayerStackDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerStackDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyRegistry" sectionFile="ui/MultiplePropertyRegistry.xwt">
+ <widget href="ui/MultiplePropertyRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple Property" sectionFile="ui/MultipleProperty.xwt">
+ <widget href="ui/MultipleProperty.xwt#/"/>
+ </sections>
+ <sections name="Multiple Type" sectionFile="ui/MultipleType.xwt">
+ <widget href="ui/MultipleType.xwt#/"/>
+ </sections>
+ <sections name="Multiple Metamodel" sectionFile="ui/MultipleMetamodel.xwt">
+ <widget href="ui/MultipleMetamodel.xwt#/"/>
+ </sections>
+ <sections name="Multiple TypeInstance" sectionFile="ui/MultipleTypeInstance.xwt">
+ <widget href="ui/MultipleTypeInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple ComputePropertyValueCommandItf" sectionFile="ui/MultipleComputePropertyValueCommandItf.xwt">
+ <widget href="ui/MultipleComputePropertyValueCommandItf.xwt#/"/>
+ </sections>
+ <sections name="Multiple TypeRegistry" sectionFile="ui/MultipleTypeRegistry.xwt">
+ <widget href="ui/MultipleTypeRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToTypeMap" sectionFile="ui/MultipleStringToTypeMap.xwt">
+ <widget href="ui/MultipleStringToTypeMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerDescriptorRegistry" sectionFile="ui/MultipleLayerDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerDescriptor" sectionFile="ui/MultipleLayerDescriptor.xwt">
+ <widget href="ui/MultipleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerApplicationFactory" sectionFile="ui/MultipleLayerApplicationFactory.xwt">
+ <widget href="ui/MultipleLayerApplicationFactory.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertySetterRegistry" sectionFile="ui/MultiplePropertySetterRegistry.xwt">
+ <widget href="ui/MultiplePropertySetterRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertySetter" sectionFile="ui/MultiplePropertySetter.xwt">
+ <widget href="ui/MultiplePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToPropertySetter" sectionFile="ui/MultipleStringToPropertySetter.xwt">
+ <widget href="ui/MultipleStringToPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerOperatorDescriptorRegistry" sectionFile="ui/MultipleLayerOperatorDescriptorRegistry.xwt">
+ <widget href="ui/MultipleLayerOperatorDescriptorRegistry.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerOperatorDescriptor" sectionFile="ui/MultipleLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyOperator" sectionFile="ui/MultiplePropertyOperator.xwt">
+ <widget href="ui/MultiplePropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple AbstractLayerOperator" sectionFile="ui/MultipleAbstractLayerOperator.xwt">
+ <widget href="ui/MultipleAbstractLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple LayerOperator" sectionFile="ui/MultipleLayerOperator.xwt">
+ <widget href="ui/MultipleLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple DefaultPropertyOperator" sectionFile="ui/MultipleDefaultPropertyOperator.xwt">
+ <widget href="ui/MultipleDefaultPropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple AbstractLayer" sectionFile="ui/MultipleAbstractLayer.xwt">
+ <widget href="ui/MultipleAbstractLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToTypeInstanceMap" sectionFile="ui/MultipleStringToTypeInstanceMap.xwt">
+ <widget href="ui/MultipleStringToTypeInstanceMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple Folder" sectionFile="ui/MultipleFolder.xwt">
+ <widget href="ui/MultipleFolder.xwt#/"/>
+ </sections>
+ <sections name="Multiple IntInstance" sectionFile="ui/MultipleIntInstance.xwt">
+ <widget href="ui/MultipleIntInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple BooleanInstance" sectionFile="ui/MultipleBooleanInstance.xwt">
+ <widget href="ui/MultipleBooleanInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringInstance" sectionFile="ui/MultipleStringInstance.xwt">
+ <widget href="ui/MultipleStringInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple IntType" sectionFile="ui/MultipleIntType.xwt">
+ <widget href="ui/MultipleIntType.xwt#/"/>
+ </sections>
+ <sections name="Multiple BooleanType" sectionFile="ui/MultipleBooleanType.xwt">
+ <widget href="ui/MultipleBooleanType.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringType" sectionFile="ui/MultipleStringType.xwt">
+ <widget href="ui/MultipleStringType.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomType" sectionFile="ui/MultipleCustomType.xwt">
+ <widget href="ui/MultipleCustomType.xwt#/"/>
+ </sections>
+ <sections name="Multiple TopLayerOperator" sectionFile="ui/MultipleTopLayerOperator.xwt">
+ <widget href="ui/MultipleTopLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple StackedLayerOperator" sectionFile="ui/MultipleStackedLayerOperator.xwt">
+ <widget href="ui/MultipleStackedLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomLayerOperator" sectionFile="ui/MultipleCustomLayerOperator.xwt">
+ <widget href="ui/MultipleCustomLayerOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple PropertyIndex" sectionFile="ui/MultiplePropertyIndex.xwt">
+ <widget href="ui/MultiplePropertyIndex.xwt#/"/>
+ </sections>
+ <sections name="Multiple StringToPropertyIndexMap" sectionFile="ui/MultipleStringToPropertyIndexMap.xwt">
+ <widget href="ui/MultipleStringToPropertyIndexMap.xwt#/"/>
+ </sections>
+ <sections name="Multiple SimpleLayerDescriptor" sectionFile="ui/MultipleSimpleLayerDescriptor.xwt">
+ <widget href="ui/MultipleSimpleLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple RegExpLayerDescriptor" sectionFile="ui/MultipleRegExpLayerDescriptor.xwt">
+ <widget href="ui/MultipleRegExpLayerDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple NullInstance" sectionFile="ui/MultipleNullInstance.xwt">
+ <widget href="ui/MultipleNullInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple RegExpLayer" sectionFile="ui/MultipleRegExpLayer.xwt">
+ <widget href="ui/MultipleRegExpLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple Layer" sectionFile="ui/MultipleLayer.xwt">
+ <widget href="ui/MultipleLayer.xwt#/"/>
+ </sections>
+ <sections name="Multiple Color" sectionFile="ui/MultipleColor.xwt">
+ <widget href="ui/MultipleColor.xwt#/"/>
+ </sections>
+ <sections name="Multiple ColorInstance" sectionFile="ui/MultipleColorInstance.xwt">
+ <widget href="ui/MultipleColorInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple FillInstance" sectionFile="ui/MultipleFillInstance.xwt">
+ <widget href="ui/MultipleFillInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple Fill" sectionFile="ui/MultipleFill.xwt">
+ <widget href="ui/MultipleFill.xwt#/"/>
+ </sections>
+ <sections name="Multiple FillPropertySetter" sectionFile="ui/MultipleFillPropertySetter.xwt">
+ <widget href="ui/MultipleFillPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsValidPropertySetter" sectionFile="ui/MultipleIsValidPropertySetter.xwt">
+ <widget href="ui/MultipleIsValidPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple NullPropertySetter" sectionFile="ui/MultipleNullPropertySetter.xwt">
+ <widget href="ui/MultipleNullPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple LineType" sectionFile="ui/MultipleLineType.xwt">
+ <widget href="ui/MultipleLineType.xwt#/"/>
+ </sections>
+ <sections name="Multiple LineInstance" sectionFile="ui/MultipleLineInstance.xwt">
+ <widget href="ui/MultipleLineInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple LinePropertySetter" sectionFile="ui/MultipleLinePropertySetter.xwt">
+ <widget href="ui/MultipleLinePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontPropertySetter" sectionFile="ui/MultipleFontPropertySetter.xwt">
+ <widget href="ui/MultipleFontPropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontInstance" sectionFile="ui/MultipleFontInstance.xwt">
+ <widget href="ui/MultipleFontInstance.xwt#/"/>
+ </sections>
+ <sections name="Multiple FontType" sectionFile="ui/MultipleFontType.xwt">
+ <widget href="ui/MultipleFontType.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsVisiblePropertySetter" sectionFile="ui/MultipleIsVisiblePropertySetter.xwt">
+ <widget href="ui/MultipleIsVisiblePropertySetter.xwt#/"/>
+ </sections>
+ <sections name="Multiple TopLayerOperatorDescriptor" sectionFile="ui/MultipleTopLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleTopLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple StackedLayerOperatorDescriptor" sectionFile="ui/MultipleStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple CustomPropertyOperator" sectionFile="ui/MultipleCustomPropertyOperator.xwt">
+ <widget href="ui/MultipleCustomPropertyOperator.xwt#/"/>
+ </sections>
+ <sections name="Multiple AndStackedLayerOperatorDescriptor" sectionFile="ui/MultipleAndStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleAndStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple OrStackedLayerOperatorDescriptor" sectionFile="ui/MultipleOrStackedLayerOperatorDescriptor.xwt">
+ <widget href="ui/MultipleOrStackedLayerOperatorDescriptor.xwt#/"/>
+ </sections>
+ <sections name="Multiple IsAbstractUmlSetter" sectionFile="ui/MultipleIsAbstractUmlSetter.xwt">
+ <widget href="ui/MultipleIsAbstractUmlSetter.xwt#/"/>
+ </sections>
+ </tabs>
+ <views name="Single LayersStack" sections="//@tabs.0/@sections.1" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStack">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+ </constraints>
+ </views>
+ <views name="Single LayerExpression" sections="//@tabs.0/@sections.2" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerExpression">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+ </constraints>
+ </views>
+ <views name="Single LayersStackApplication" sections="//@tabs.0/@sections.4" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStackApplication">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+ </constraints>
+ </views>
+ <views name="Single FolderElement" sections="//@tabs.0/@sections.5" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolderElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+ </constraints>
+ </views>
+ <views name="Single LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.6" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerStackDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyRegistry" sections="//@tabs.0/@sections.7" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Property" sections="//@tabs.0/@sections.8" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleProperty">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+ </constraints>
+ </views>
+ <views name="Single Type" sections="//@tabs.0/@sections.9" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+ </constraints>
+ </views>
+ <views name="Single Metamodel" sections="//@tabs.0/@sections.10" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleMetamodel">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single TypeInstance" sections="//@tabs.0/@sections.11" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single TypeRegistry" sections="//@tabs.0/@sections.13" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringToTypeMap" sections="//@tabs.0/@sections.14" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+ </constraints>
+ </views>
+ <views name="Single LayerDescriptorRegistry" sections="//@tabs.0/@sections.15" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LayerDescriptor" sections="//@tabs.0/@sections.16" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single LayerApplicationFactory" sections="//@tabs.0/@sections.17" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerApplicationFactory">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single PropertySetterRegistry" sections="//@tabs.0/@sections.18" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetterRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single PropertySetter" sections="//@tabs.0/@sections.19" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single StringToPropertySetter" sections="//@tabs.0/@sections.20" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single LayerOperatorDescriptorRegistry" sections="//@tabs.0/@sections.21" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperatorDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views name="Single LayerOperatorDescriptor" sections="//@tabs.0/@sections.22" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyOperator" sections="//@tabs.0/@sections.23" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single AbstractLayerOperator" sections="//@tabs.0/@sections.24" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+ </constraints>
+ </views>
+ <views name="Single LayerOperator" sections="//@tabs.0/@sections.25" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single DefaultPropertyOperator" sections="//@tabs.0/@sections.26" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleDefaultPropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="DefaultPropertyOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single AbstractLayer" sections="//@tabs.0/@sections.27" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+ </constraints>
+ </views>
+ <views name="Single StringToTypeInstanceMap" sections="//@tabs.0/@sections.28" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeInstanceMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Folder" sections="//@tabs.0/@sections.29" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolder">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+ </constraints>
+ </views>
+ <views name="Single IntInstance" sections="//@tabs.0/@sections.30" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+ </constraints>
+ </views>
+ <views name="Single BooleanInstance" sections="//@tabs.0/@sections.31" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+ </constraints>
+ </views>
+ <views name="Single StringInstance" sections="//@tabs.0/@sections.32" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IntType" sections="//@tabs.0/@sections.33" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+ </constraints>
+ </views>
+ <views name="Single BooleanType" sections="//@tabs.0/@sections.34" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+ </constraints>
+ </views>
+ <views name="Single StringType" sections="//@tabs.0/@sections.35" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single CustomType" sections="//@tabs.0/@sections.36" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+ </constraints>
+ </views>
+ <views name="Single TopLayerOperator" sections="//@tabs.0/@sections.37" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StackedLayerOperator" sections="//@tabs.0/@sections.38" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single CustomLayerOperator" sections="//@tabs.0/@sections.39" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single PropertyIndex" sections="//@tabs.0/@sections.40" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyIndex">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single StringToPropertyIndexMap" sections="//@tabs.0/@sections.41" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertyIndexMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single SimpleLayerDescriptor" sections="//@tabs.0/@sections.42" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleSimpleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single RegExpLayerDescriptor" sections="//@tabs.0/@sections.43" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single NullInstance" sections="//@tabs.0/@sections.44" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+ </constraints>
+ </views>
+ <views name="Single RegExpLayer" sections="//@tabs.0/@sections.45" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+ </constraints>
+ </views>
+ <views name="Single Layer" sections="//@tabs.0/@sections.46" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+ </constraints>
+ </views>
+ <views name="Single Color" sections="//@tabs.0/@sections.47" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+ </constraints>
+ </views>
+ <views name="Single ColorInstance" sections="//@tabs.0/@sections.48" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColorInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+ </constraints>
+ </views>
+ <views name="Single FillInstance" sections="//@tabs.0/@sections.49" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single Fill" sections="//@tabs.0/@sections.50" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFill">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FillPropertySetter" sections="//@tabs.0/@sections.51" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IsValidPropertySetter" sections="//@tabs.0/@sections.52" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsValidPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single NullPropertySetter" sections="//@tabs.0/@sections.53" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single LineType" sections="//@tabs.0/@sections.54" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+ </constraints>
+ </views>
+ <views name="Single LineInstance" sections="//@tabs.0/@sections.55" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single LinePropertySetter" sections="//@tabs.0/@sections.56" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLinePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single FontPropertySetter" sections="//@tabs.0/@sections.57" automaticContext="true" datacontexts="//@dataContexts.0/@elements.57">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single FontInstance" sections="//@tabs.0/@sections.58" automaticContext="true" datacontexts="//@dataContexts.0/@elements.58">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+ </constraints>
+ </views>
+ <views name="Single FontType" sections="//@tabs.0/@sections.59" automaticContext="true" datacontexts="//@dataContexts.0/@elements.59">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single IsVisiblePropertySetter" sections="//@tabs.0/@sections.60" automaticContext="true" datacontexts="//@dataContexts.0/@elements.60">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsVisiblePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+ </constraints>
+ </views>
+ <views name="Single TopLayerOperatorDescriptor" sections="//@tabs.0/@sections.61" automaticContext="true" datacontexts="//@dataContexts.0/@elements.61">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperatorDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single StackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.62" automaticContext="true" datacontexts="//@dataContexts.0/@elements.62">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single CustomPropertyOperator" sections="//@tabs.0/@sections.63" automaticContext="true" datacontexts="//@dataContexts.0/@elements.63">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomPropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomPropertyOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single AndStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.64" automaticContext="true" datacontexts="//@dataContexts.0/@elements.64">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAndStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AndStackedLayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views name="Single OrStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.65" automaticContext="true" datacontexts="//@dataContexts.0/@elements.65">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleOrStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="OrStackedLayerOperatorDescriptor"/>
+ </constraints>
+ </views>
+ <views name="Single IsAbstractUmlSetter" sections="//@tabs.0/@sections.66" automaticContext="true" datacontexts="//@dataContexts.0/@elements.66">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsAbstractUmlSetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsAbstractUmlSetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayersStack" sections="//@tabs.0/@sections.68" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStack">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerExpression" sections="//@tabs.0/@sections.69" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerExpression">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ApplicationDependantElement" sections="//@tabs.0/@sections.70" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleApplicationDependantElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayersStackApplication" sections="//@tabs.0/@sections.71" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStackApplication">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FolderElement" sections="//@tabs.0/@sections.72" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolderElement">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.73" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerStackDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyRegistry" sections="//@tabs.0/@sections.74" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Property" sections="//@tabs.0/@sections.75" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleProperty">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Type" sections="//@tabs.0/@sections.76" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Metamodel" sections="//@tabs.0/@sections.77" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleMetamodel">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TypeInstance" sections="//@tabs.0/@sections.78" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.79" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleComputePropertyValueCommandItf">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TypeRegistry" sections="//@tabs.0/@sections.80" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToTypeMap" sections="//@tabs.0/@sections.81" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerDescriptorRegistry" sections="//@tabs.0/@sections.82" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerDescriptor" sections="//@tabs.0/@sections.83" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerApplicationFactory" sections="//@tabs.0/@sections.84" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerApplicationFactory">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertySetterRegistry" sections="//@tabs.0/@sections.85" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetterRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertySetter" sections="//@tabs.0/@sections.86" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToPropertySetter" sections="//@tabs.0/@sections.87" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerOperatorDescriptorRegistry" sections="//@tabs.0/@sections.88" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperatorDescriptorRegistry">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptorRegistry"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerOperatorDescriptor" sections="//@tabs.0/@sections.89" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyOperator" sections="//@tabs.0/@sections.90" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AbstractLayerOperator" sections="//@tabs.0/@sections.91" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LayerOperator" sections="//@tabs.0/@sections.92" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple DefaultPropertyOperator" sections="//@tabs.0/@sections.93" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleDefaultPropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="DefaultPropertyOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AbstractLayer" sections="//@tabs.0/@sections.94" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToTypeInstanceMap" sections="//@tabs.0/@sections.95" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeInstanceMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Folder" sections="//@tabs.0/@sections.96" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolder">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IntInstance" sections="//@tabs.0/@sections.97" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple BooleanInstance" sections="//@tabs.0/@sections.98" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringInstance" sections="//@tabs.0/@sections.99" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IntType" sections="//@tabs.0/@sections.100" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple BooleanType" sections="//@tabs.0/@sections.101" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringType" sections="//@tabs.0/@sections.102" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomType" sections="//@tabs.0/@sections.103" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TopLayerOperator" sections="//@tabs.0/@sections.104" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StackedLayerOperator" sections="//@tabs.0/@sections.105" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomLayerOperator" sections="//@tabs.0/@sections.106" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomLayerOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple PropertyIndex" sections="//@tabs.0/@sections.107" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyIndex">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StringToPropertyIndexMap" sections="//@tabs.0/@sections.108" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertyIndexMap">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple SimpleLayerDescriptor" sections="//@tabs.0/@sections.109" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleSimpleLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple RegExpLayerDescriptor" sections="//@tabs.0/@sections.110" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayerDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple NullInstance" sections="//@tabs.0/@sections.111" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple RegExpLayer" sections="//@tabs.0/@sections.112" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Layer" sections="//@tabs.0/@sections.113" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayer">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Color" sections="//@tabs.0/@sections.114" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple ColorInstance" sections="//@tabs.0/@sections.115" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColorInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FillInstance" sections="//@tabs.0/@sections.116" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple Fill" sections="//@tabs.0/@sections.117" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFill">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FillPropertySetter" sections="//@tabs.0/@sections.118" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsValidPropertySetter" sections="//@tabs.0/@sections.119" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsValidPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple NullPropertySetter" sections="//@tabs.0/@sections.120" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LineType" sections="//@tabs.0/@sections.121" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LineInstance" sections="//@tabs.0/@sections.122" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple LinePropertySetter" sections="//@tabs.0/@sections.123" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLinePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontPropertySetter" sections="//@tabs.0/@sections.124" automaticContext="true" datacontexts="//@dataContexts.0/@elements.57">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontPropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontInstance" sections="//@tabs.0/@sections.125" automaticContext="true" datacontexts="//@dataContexts.0/@elements.58">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontInstance">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple FontType" sections="//@tabs.0/@sections.126" automaticContext="true" datacontexts="//@dataContexts.0/@elements.59">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontType">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsVisiblePropertySetter" sections="//@tabs.0/@sections.127" automaticContext="true" datacontexts="//@dataContexts.0/@elements.60">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsVisiblePropertySetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple TopLayerOperatorDescriptor" sections="//@tabs.0/@sections.128" automaticContext="true" datacontexts="//@dataContexts.0/@elements.61">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple StackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.129" automaticContext="true" datacontexts="//@dataContexts.0/@elements.62">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperatorDescriptor"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple CustomPropertyOperator" sections="//@tabs.0/@sections.130" automaticContext="true" datacontexts="//@dataContexts.0/@elements.63">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomPropertyOperator">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="CustomPropertyOperator"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple AndStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.131" automaticContext="true" datacontexts="//@dataContexts.0/@elements.64">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAndStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="AndStackedLayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple OrStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.132" automaticContext="true" datacontexts="//@dataContexts.0/@elements.65">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleOrStackedLayerOperatorDescriptor">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="OrStackedLayerOperatorDescriptor"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <views elementMultiplicity="-1" name="Multiple IsAbstractUmlSetter" sections="//@tabs.0/@sections.133" automaticContext="true" datacontexts="//@dataContexts.0/@elements.66">
+ <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsAbstractUmlSetter">
+ <constraintType href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@constraintTypes.0"/>
+ <properties xsi:type="constraints:ValueProperty" name="className" value="IsAbstractUmlSetter"/>
+ <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+ </constraints>
+ </views>
+ <dataContexts name="layers" label="layers">
+ <elements name="LayerNamedStyle">
+ <properties name="layersStack" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="LayersStack">
+ <properties name="layers" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="diagram" type="Reference"/>
+ </elements>
+ <elements name="LayerExpression" supertypes="//@dataContexts.0/@elements.3">
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="isLayerEnabledInternal" type="Boolean"/>
+ <properties name="isLayerEnabled" type="Boolean"/>
+ </elements>
+ <elements name="ApplicationDependantElement">
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="LayersStackApplication" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="layersStacks" type="Reference" multiplicity="-1"/>
+ <properties name="layerStackRegistry" type="Reference"/>
+ <properties name="propertyRegistry" type="Reference"/>
+ <properties name="layerDescriptorRegistry" type="Reference"/>
+ <properties name="factory" type="Reference"/>
+ <properties name="propertySetterRegistry" type="Reference"/>
+ <properties name="layerOperatorDescriptorRegistry" type="Reference"/>
+ </elements>
+ <elements name="FolderElement"/>
+ <elements name="LayerStackDescriptorRegistry"/>
+ <elements name="PropertyRegistry">
+ <properties name="properties" type="Reference" multiplicity="-1"/>
+ <properties name="typeRegistry" type="Reference"/>
+ <properties name="propertiesCount" type="Integer"/>
+ </elements>
+ <elements name="Property" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="type" type="Reference"/>
+ <properties name="defaultValue" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="index" type="Integer"/>
+ </elements>
+ <elements name="Type" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="metamodel" type="Reference"/>
+ <properties name="name"/>
+ <properties name="description"/>
+ </elements>
+ <elements name="Metamodel" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="name"/>
+ <properties name="description"/>
+ <properties name="nsuri"/>
+ <properties name="pluginID"/>
+ <properties name="ePackageInstanceName"/>
+ <properties name="isTypeValid" type="Boolean"/>
+ </elements>
+ <elements name="TypeInstance" supertypes="//@dataContexts.0/@elements.12"/>
+ <elements name="ComputePropertyValueCommandItf"/>
+ <elements name="TypeRegistry">
+ <properties name="types" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="StringToTypeMap">
+ <properties name="value" type="Reference"/>
+ <properties name="key"/>
+ </elements>
+ <elements name="LayerDescriptorRegistry">
+ <properties name="layerDescriptors" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="LayerDescriptor">
+ <properties name="propertyRegistry" type="Reference"/>
+ </elements>
+ <elements name="LayerApplicationFactory">
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="PropertySetterRegistry">
+ <properties name="propertySetters" type="Reference" multiplicity="-1"/>
+ <properties name="setterMap" type="Reference" multiplicity="-1"/>
+ <properties name="application" type="Reference"/>
+ </elements>
+ <elements name="PropertySetter">
+ <properties name="property" type="Reference"/>
+ <properties name="propertyName"/>
+ </elements>
+ <elements name="StringToPropertySetter">
+ <properties name="key"/>
+ <properties name="value" type="Reference"/>
+ </elements>
+ <elements name="LayerOperatorDescriptorRegistry">
+ <properties name="descriptors" type="Reference" multiplicity="-1"/>
+ <properties name="propertyOperators" type="Reference" multiplicity="-1"/>
+ <properties name="propertyCollectionSize" type="Integer"/>
+ <properties name="defaultOperator" type="Reference"/>
+ </elements>
+ <elements name="LayerOperatorDescriptor">
+ <properties name="propertyOperators" type="Reference" multiplicity="-1"/>
+ <properties name="name"/>
+ </elements>
+ <elements name="PropertyOperator">
+ <properties name="name"/>
+ </elements>
+ <elements name="AbstractLayerOperator" supertypes="//@dataContexts.0/@elements.25">
+ <properties name="layerOperatorDescriptor" type="Reference"/>
+ <properties name="layerOperatorDescriptorName"/>
+ </elements>
+ <elements name="LayerOperator" supertypes="//@dataContexts.0/@elements.2">
+ <properties name="layers" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="DefaultPropertyOperator" supertypes="//@dataContexts.0/@elements.23"/>
+ <elements name="AbstractLayer" supertypes="//@dataContexts.0/@elements.2">
+ <properties name="propertyValues" type="Reference" multiplicity="-1"/>
+ <properties name="propertyValueMap" type="Reference" multiplicity="-1"/>
+ <properties name="layerDescriptor" type="Reference"/>
+ <properties name="views" type="Reference" multiplicity="-1"/>
+ <properties name="attachedProperties" type="Reference" multiplicity="-1"/>
+ </elements>
+ <elements name="StringToTypeInstanceMap">
+ <properties name="key"/>
+ <properties name="value" type="Reference"/>
+ </elements>
+ <elements name="Folder" supertypes="//@dataContexts.0/@elements.5">
+ <properties name="elements" type="Reference" multiplicity="-1"/>
+ <properties name="name"/>
+ </elements>
+ <elements name="IntInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Integer"/>
+ </elements>
+ <elements name="BooleanInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Boolean"/>
+ </elements>
+ <elements name="StringInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value"/>
+ </elements>
+ <elements name="IntType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="BooleanType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="StringType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="CustomType" supertypes="//@dataContexts.0/@elements.9">
+ <properties name="classifier"/>
+ </elements>
+ <elements name="TopLayerOperator" supertypes="//@dataContexts.0/@elements.24"/>
+ <elements name="StackedLayerOperator" supertypes="//@dataContexts.0/@elements.24"/>
+ <elements name="CustomLayerOperator" supertypes="//@dataContexts.0/@elements.25"/>
+ <elements name="PropertyIndex">
+ <properties name="property" type="Reference"/>
+ <properties name="index" type="Integer"/>
+ </elements>
+ <elements name="StringToPropertyIndexMap">
+ <properties name="value" type="Reference"/>
+ <properties name="key"/>
+ </elements>
+ <elements name="SimpleLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+ <elements name="RegExpLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+ <elements name="NullInstance" supertypes="//@dataContexts.0/@elements.11"/>
+ <elements name="RegExpLayer" supertypes="//@dataContexts.0/@elements.27">
+ <properties name="expr"/>
+ <properties name="language"/>
+ <properties name="isDomainChangedEventDependant" type="Boolean"/>
+ <properties name="domainChangedEventLevel" type="Enumeration"/>
+ <properties name="isDiagramChangedEventDependant" type="Boolean"/>
+ <properties name="diagramChangedEventLevel" type="Enumeration"/>
+ <properties name="expressionContextObjectType"/>
+ </elements>
+ <elements name="Layer" supertypes="//@dataContexts.0/@elements.27"/>
+ <elements name="Color" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="ColorInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="value" type="Integer"/>
+ </elements>
+ <elements name="FillInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="transparency" type="Integer"/>
+ <properties name="fillColor" type="Reference"/>
+ </elements>
+ <elements name="Fill" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="FillPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="IsValidPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="NullPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="LineType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="LineInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="lineColor" type="Integer"/>
+ <properties name="lineWith" type="Integer"/>
+ </elements>
+ <elements name="LinePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="FontPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="FontInstance" supertypes="//@dataContexts.0/@elements.11">
+ <properties name="fontColor" type="Integer"/>
+ <properties name="fontName"/>
+ <properties name="fontHeigh" type="Integer"/>
+ <properties name="bold" type="Boolean"/>
+ </elements>
+ <elements name="FontType" supertypes="//@dataContexts.0/@elements.9"/>
+ <elements name="IsVisiblePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <elements name="TopLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.22"/>
+ <elements name="StackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.22"/>
+ <elements name="CustomPropertyOperator" supertypes="//@dataContexts.0/@elements.23">
+ <properties name="classname"/>
+ <properties name="operatorInstance"/>
+ <properties name="classBundleID"/>
+ </elements>
+ <elements name="AndStackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.62"/>
+ <elements name="OrStackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.62"/>
+ <elements name="IsAbstractUmlSetter" supertypes="//@dataContexts.0/@elements.19"/>
+ <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.views.properties/model/Environment.xmi#//@modelElementFactories.0"/>
+ </dataContexts>
+</contexts:Context>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayer.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayer.xwt
new file mode 100644
index 00000000000..d71cf0ea33b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayer.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayerOperator.xwt
new file mode 100644
index 00000000000..d71cf0ea33b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAndStackedLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAndStackedLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAndStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleApplicationDependantElement.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleApplicationDependantElement.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleApplicationDependantElement.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanInstance.xwt
new file mode 100644
index 00000000000..2b3dab01365
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanInstance.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:BooleanInstance:value"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanType.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColor.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColorInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColorInstance.xwt
new file mode 100644
index 00000000000..c1f202dc1fe
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColorInstance.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <gmf:XWTAwareColorPicker input="{Binding}"
+ property="layers:ColorInstance:value"></gmf:XWTAwareColorPicker>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleComputePropertyValueCommandItf.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleComputePropertyValueCommandItf.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleComputePropertyValueCommandItf.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomLayerOperator.xwt
new file mode 100644
index 00000000000..d71cf0ea33b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomPropertyOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomPropertyOperator.xwt
new file mode 100644
index 00000000000..88153cdfa82
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomPropertyOperator.xwt
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:CustomPropertyOperator:classname"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:CustomPropertyOperator:operatorInstance"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:CustomPropertyOperator:classBundleID"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomType.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleDefaultPropertyOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleDefaultPropertyOperator.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleDefaultPropertyOperator.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFill.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFill.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFill.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillInstance.xwt
new file mode 100644
index 00000000000..e49d1721229
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillInstance.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerSpinner input="{Binding}"
+ property="layers:FillInstance:transparency"></ppe:IntegerSpinner>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillPropertySetter.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolder.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolder.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolder.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolderElement.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolderElement.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolderElement.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontInstance.xwt
new file mode 100644
index 00000000000..260605b06e8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontInstance.xwt
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <gmf:XWTAwareFontEditor input="{Binding}"
+ property="layers:FontInstance:fontName"></gmf:XWTAwareFontEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}"
+ property="layers:FontInstance:bold"></ppe:BooleanCheckbox>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <gmf:XWTAwareColorPicker input="{Binding}"
+ property="layers:FontInstance:fontColor"></gmf:XWTAwareColorPicker>
+ <ppe:IntegerSpinner input="{Binding}"
+ property="layers:FontInstance:fontHeigh"></ppe:IntegerSpinner>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontPropertySetter.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontType.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntInstance.xwt
new file mode 100644
index 00000000000..5e5f110c083
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntInstance.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerEditor input="{Binding}" property="layers:IntInstance:value"></ppe:IntegerEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntType.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsAbstractUmlSetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsAbstractUmlSetter.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsAbstractUmlSetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsValidPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsValidPropertySetter.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsValidPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsVisiblePropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsVisiblePropertySetter.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsVisiblePropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayer.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayer.xwt
new file mode 100644
index 00000000000..1ae37747760
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayer.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerApplicationFactory.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerApplicationFactory.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerApplicationFactory.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptor.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptorRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptorRegistry.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptorRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerExpression.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerExpression.xwt
new file mode 100644
index 00000000000..646f705e8f5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerExpression.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerNamedStyle.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerNamedStyle.xwt
new file mode 100644
index 00000000000..dccdd35955f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerNamedStyle.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperator.xwt
new file mode 100644
index 00000000000..d71cf0ea33b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptorRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptorRegistry.xwt
new file mode 100644
index 00000000000..34dfea09c6f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptorRegistry.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerEditor input="{Binding}"
+ property="layers:LayerOperatorDescriptorRegistry:propertyCollectionSize"></ppe:IntegerEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerStackDescriptorRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerStackDescriptorRegistry.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerStackDescriptorRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStack.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStack.xwt
new file mode 100644
index 00000000000..af1cdf54ee7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStack.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStackApplication.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStackApplication.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStackApplication.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineInstance.xwt
new file mode 100644
index 00000000000..bdf3ad2e494
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineInstance.xwt
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <gmf:XWTAwareColorPicker input="{Binding}"
+ property="layers:LineInstance:lineColor"></gmf:XWTAwareColorPicker>
+ <ppe:IntegerSpinner input="{Binding}"
+ property="layers:LineInstance:lineWith"></ppe:IntegerSpinner>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLinePropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLinePropertySetter.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLinePropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineType.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleMetamodel.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleMetamodel.xwt
new file mode 100644
index 00000000000..f6305039344
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleMetamodel.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:Metamodel:isTypeValid"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullInstance.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullInstance.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullPropertySetter.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleOrStackedLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleOrStackedLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleOrStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleProperty.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleProperty.xwt
new file mode 100644
index 00000000000..264cb53f98c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleProperty.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerEditor input="{Binding}" property="layers:Property:index"></ppe:IntegerEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyIndex.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyIndex.xwt
new file mode 100644
index 00000000000..cf4357e9f18
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyIndex.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerEditor input="{Binding}"
+ property="layers:PropertyIndex:index"></ppe:IntegerEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyOperator.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyOperator.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyRegistry.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetter.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetterRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetterRegistry.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetterRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayer.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayer.xwt
new file mode 100644
index 00000000000..e639b48b426
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayer.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:RegExpLayer:language"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayerDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayerDescriptor.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayerDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleSimpleLayerDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleSimpleLayerDescriptor.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleSimpleLayerDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperator.xwt
new file mode 100644
index 00000000000..d71cf0ea33b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringInstance.xwt
new file mode 100644
index 00000000000..c31d99f104f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringInstance.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:StringInstance:value"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertyIndexMap.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertyIndexMap.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertyIndexMap.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertySetter.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeInstanceMap.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeInstanceMap.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeInstanceMap.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeMap.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeMap.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeMap.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringType.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperator.xwt
new file mode 100644
index 00000000000..d71cf0ea33b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleType.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeInstance.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeInstance.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeRegistry.xwt
new file mode 100644
index 00000000000..86e16390d7a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayer.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayer.xwt
new file mode 100644
index 00000000000..66c689b4694
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayer.xwt
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerExpression:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:AbstractLayer:layerDescriptor"></ppe:ReferenceDialog>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:ApplicationDependantElement:application"></ppe:ReferenceDialog>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:AbstractLayer:propertyValues"></ppe:MultiReference>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:AbstractLayer:views"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayerOperator.xwt
new file mode 100644
index 00000000000..ac77a0db61e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayerOperator.xwt
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerExpression:description"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:AbstractLayerOperator:layerOperatorDescriptorName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:AbstractLayerOperator:layerOperatorDescriptor"></ppe:ReferenceDialog>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:ApplicationDependantElement:application"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAndStackedLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAndStackedLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..f69cdc8ea32
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAndStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleApplicationDependantElement.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleApplicationDependantElement.xwt
new file mode 100644
index 00000000000..f7e156f1cb1
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleApplicationDependantElement.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:ApplicationDependantElement:application"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanInstance.xwt
new file mode 100644
index 00000000000..5b3121a09a5
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanInstance.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:BooleanInstance:value"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanType.xwt
new file mode 100644
index 00000000000..0cec4a949ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColor.xwt
new file mode 100644
index 00000000000..0a7cfe6b010
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+ <ppe:StringMultiline input="{Binding}"
+ property="layers:Type:description"></ppe:StringMultiline>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColorInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColorInstance.xwt
new file mode 100644
index 00000000000..1792d1d0527
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColorInstance.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <gmf:XWTAwareColorPicker input="{Binding}"
+ property="layers:ColorInstance:value"></gmf:XWTAwareColorPicker>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleComputePropertyValueCommandItf.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleComputePropertyValueCommandItf.xwt
new file mode 100644
index 00000000000..3f64970baa4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleComputePropertyValueCommandItf.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomLayerOperator.xwt
new file mode 100644
index 00000000000..e349cdc9b44
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomLayerOperator.xwt
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerExpression:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomPropertyOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomPropertyOperator.xwt
new file mode 100644
index 00000000000..8990a3cb203
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomPropertyOperator.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:CustomPropertyOperator:classname"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:CustomPropertyOperator:operatorInstance"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:CustomPropertyOperator:classBundleID"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertyOperator:name"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomType.xwt
new file mode 100644
index 00000000000..b1a622efe8d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomType.xwt
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:CustomType:classifier"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleDefaultPropertyOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleDefaultPropertyOperator.xwt
new file mode 100644
index 00000000000..d9e8d425077
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleDefaultPropertyOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertyOperator:name"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFill.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFill.xwt
new file mode 100644
index 00000000000..0cec4a949ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFill.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillInstance.xwt
new file mode 100644
index 00000000000..b8b85893d89
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillInstance.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerSpinner input="{Binding}"
+ property="layers:FillInstance:transparency"></ppe:IntegerSpinner>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillPropertySetter.xwt
new file mode 100644
index 00000000000..afd331005da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillPropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolder.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolder.xwt
new file mode 100644
index 00000000000..c7779d4f534
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolder.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Folder:name"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolderElement.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolderElement.xwt
new file mode 100644
index 00000000000..dccdd35955f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolderElement.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontInstance.xwt
new file mode 100644
index 00000000000..a183f47c1d9
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontInstance.xwt
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <gmf:XWTAwareFontEditor input="{Binding}"
+ property="layers:FontInstance:fontName"></gmf:XWTAwareFontEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}"
+ property="layers:FontInstance:bold"></ppe:BooleanCheckbox>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <gmf:XWTAwareColorPicker input="{Binding}"
+ property="layers:FontInstance:fontColor"></gmf:XWTAwareColorPicker>
+ <ppe:IntegerSpinner input="{Binding}"
+ property="layers:FontInstance:fontHeigh"></ppe:IntegerSpinner>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontPropertySetter.xwt
new file mode 100644
index 00000000000..afd331005da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontPropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontType.xwt
new file mode 100644
index 00000000000..0cec4a949ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntInstance.xwt
new file mode 100644
index 00000000000..3a7e1f9cb50
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntInstance.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerEditor input="{Binding}" property="layers:IntInstance:value"></ppe:IntegerEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntType.xwt
new file mode 100644
index 00000000000..0cec4a949ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsAbstractUmlSetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsAbstractUmlSetter.xwt
new file mode 100644
index 00000000000..afd331005da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsAbstractUmlSetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsValidPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsValidPropertySetter.xwt
new file mode 100644
index 00000000000..afd331005da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsValidPropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsVisiblePropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsVisiblePropertySetter.xwt
new file mode 100644
index 00000000000..afd331005da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsVisiblePropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayer.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayer.xwt
new file mode 100644
index 00000000000..6013095132e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayer.xwt
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+ <ppe:StringMultiline input="{Binding}"
+ property="layers:LayerExpression:description"></ppe:StringMultiline>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:AbstractLayer:layerDescriptor" readOnly="true"></ppe:ReferenceLabel>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReferencePropertyEditorWithPropertyView
+ input="{Binding}" property="layers:AbstractLayer:propertyValues"
+ readOnly="true"></ppe:MultiReferencePropertyEditorWithPropertyView>
+ <ppe:MultiReferencePropertyEditorWithPropertyView
+ input="{Binding}" property="layers:AbstractLayer:views" readOnly="true"></ppe:MultiReferencePropertyEditorWithPropertyView>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerApplicationFactory.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerApplicationFactory.xwt
new file mode 100644
index 00000000000..3f64970baa4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerApplicationFactory.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptor.xwt
new file mode 100644
index 00000000000..447a308ea61
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptor.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:LayerDescriptor:propertyRegistry" readOnly="true"></ppe:ReferenceLabel>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptorRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptorRegistry.xwt
new file mode 100644
index 00000000000..7d65508ff75
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptorRegistry.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerExpression.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerExpression.xwt
new file mode 100644
index 00000000000..8be3ea18218
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerExpression.xwt
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerExpression:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:ApplicationDependantElement:application"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerNamedStyle.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerNamedStyle.xwt
new file mode 100644
index 00000000000..7e6fe8b4c17
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerNamedStyle.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperator.xwt
new file mode 100644
index 00000000000..e6a5c9b0218
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperator.xwt
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerExpression:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..f69cdc8ea32
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptorRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptorRegistry.xwt
new file mode 100644
index 00000000000..c6cee889c68
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptorRegistry.xwt
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerEditor input="{Binding}"
+ property="layers:LayerOperatorDescriptorRegistry:propertyCollectionSize"></ppe:IntegerEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:LayerOperatorDescriptorRegistry:descriptors"></ppe:MultiReference>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:LayerOperatorDescriptorRegistry:propertyOperators"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerStackDescriptorRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerStackDescriptorRegistry.xwt
new file mode 100644
index 00000000000..08a3897dfb4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerStackDescriptorRegistry.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStack.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStack.xwt
new file mode 100644
index 00000000000..793092ea007
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStack.xwt
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:LayersStack:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayersStack:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:LayersStack:diagram" readOnly="true"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStackApplication.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStackApplication.xwt
new file mode 100644
index 00000000000..af1cdf54ee7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStackApplication.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineInstance.xwt
new file mode 100644
index 00000000000..561ec66bc35
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineInstance.xwt
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang" xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <gmf:XWTAwareColorPicker input="{Binding}"
+ property="layers:LineInstance:lineColor"></gmf:XWTAwareColorPicker>
+ <ppe:IntegerSpinner input="{Binding}"
+ property="layers:LineInstance:lineWith"></ppe:IntegerSpinner>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLinePropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLinePropertySetter.xwt
new file mode 100644
index 00000000000..afd331005da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLinePropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineType.xwt
new file mode 100644
index 00000000000..2f31b6e208b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleMetamodel.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleMetamodel.xwt
new file mode 100644
index 00000000000..84a531cbc34
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleMetamodel.xwt
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Metamodel:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:Metamodel:description"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Metamodel:nsuri"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Metamodel:pluginID"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:Metamodel:ePackageInstanceName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:Metamodel:isTypeValid"></ppe:BooleanRadio>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullInstance.xwt
new file mode 100644
index 00000000000..af1cdf54ee7
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullInstance.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullPropertySetter.xwt
new file mode 100644
index 00000000000..afd331005da
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullPropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleOrStackedLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleOrStackedLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..f69cdc8ea32
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleOrStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleProperty.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleProperty.xwt
new file mode 100644
index 00000000000..9e3bf5bb418
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleProperty.xwt
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:x="http://www.eclipse.org/xwt">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Property:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Property:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerEditor input="{Binding}" property="layers:Property:index"
+ readOnly="true"></ppe:IntegerEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Property:type"
+ readOnly="true"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyIndex.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyIndex.xwt
new file mode 100644
index 00000000000..9b6e585ac0f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyIndex.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:j="clr-namespace:java.lang" xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerEditor input="{Binding}"
+ property="layers:PropertyIndex:index"></ppe:IntegerEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertyIndex:property"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyOperator.xwt
new file mode 100644
index 00000000000..df4f674d60a
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertyOperator:name"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyRegistry.xwt
new file mode 100644
index 00000000000..645540f6fe2
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyRegistry.xwt
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:j="clr-namespace:java.lang" xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:IntegerEditor input="{Binding}"
+ property="layers:PropertyRegistry:propertiesCount" readOnly="true"></ppe:IntegerEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertyRegistry:typeRegistry" readOnly="true"></ppe:ReferenceDialog>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:PropertyRegistry:properties" readOnly="true"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetter.xwt
new file mode 100644
index 00000000000..cb520924506
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetterRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetterRegistry.xwt
new file mode 100644
index 00000000000..04ea489c6b4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetterRegistry.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:PropertySetterRegistry:propertySetters"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayer.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayer.xwt
new file mode 100644
index 00000000000..135beec722f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayer.xwt
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringMultiline input="{Binding}"
+ property="layers:RegExpLayer:expr"></ppe:StringMultiline>
+ <ppe:StringEditor input="{Binding}" property="layers:RegExpLayer:language"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+ <ppe:StringMultiline input="{Binding}"
+ property="layers:LayerExpression:description"></ppe:StringMultiline>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:RegExpLayer:isDomainChangedEventDependant"></ppe:BooleanRadio>
+ <ppe:BooleanRadio input="{Binding}"
+ property="layers:RegExpLayer:isDiagramChangedEventDependant"></ppe:BooleanRadio>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:EnumCombo input="{Binding}"
+ property="layers:RegExpLayer:domainChangedEventLevel"></ppe:EnumCombo>
+ <ppe:EnumCombo input="{Binding}"
+ property="layers:RegExpLayer:diagramChangedEventLevel"></ppe:EnumCombo>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:AbstractLayer:layerDescriptor" readOnly="true"></ppe:ReferenceLabel>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:AbstractLayer:propertyValues" readOnly="true"></ppe:MultiReference>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:AbstractLayer:views"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayerDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayerDescriptor.xwt
new file mode 100644
index 00000000000..a1a5251dbe3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayerDescriptor.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:LayerDescriptor:propertyRegistry" readOnly="true"></ppe:ReferenceLabel>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleSimpleLayerDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleSimpleLayerDescriptor.xwt
new file mode 100644
index 00000000000..6855551dd31
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleSimpleLayerDescriptor.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:LayerDescriptor:propertyRegistry" readOnly="true"></ppe:ReferenceLabel>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperator.xwt
new file mode 100644
index 00000000000..60a3dc033dd
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperator.xwt
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerExpression:description"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:AbstractLayerOperator:layerOperatorDescriptorName"
+ readOnly="true"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:AbstractLayerOperator:layerOperatorDescriptor"
+ readOnly="true"></ppe:ReferenceDialog>
+ <ppe:ReferenceDialog input="{Binding}"
+ property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..f69cdc8ea32
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringInstance.xwt
new file mode 100644
index 00000000000..0b2f61171f3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringInstance.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:StringInstance:value"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertyIndexMap.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertyIndexMap.xwt
new file mode 100644
index 00000000000..3c15c42a0ad
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertyIndexMap.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:StringToPropertyIndexMap:key" readOnly="true"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertySetter.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertySetter.xwt
new file mode 100644
index 00000000000..05ccbd96877
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertySetter.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:StringToPropertySetter:key" readOnly="true"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeInstanceMap.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeInstanceMap.xwt
new file mode 100644
index 00000000000..211b4ed111c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeInstanceMap.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:StringToTypeInstanceMap:key" readOnly="true"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeMap.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeMap.xwt
new file mode 100644
index 00000000000..5a5f0804bfb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeMap.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:StringToTypeMap:key"
+ readOnly="true"></ppe:StringEditor>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringType.xwt
new file mode 100644
index 00000000000..0cec4a949ea
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperator.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperator.xwt
new file mode 100644
index 00000000000..14edca2bc68
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperator.xwt
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerExpression:description"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:AbstractLayerOperator:layerOperatorDescriptorName"
+ readOnly="true"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:BooleanCheckbox input="{Binding}"
+ property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:AbstractLayerOperator:layerOperatorDescriptor"
+ readOnly="true"></ppe:ReferenceLabel>
+ <ppe:ReferenceLabel input="{Binding}"
+ property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperatorDescriptor.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperatorDescriptor.xwt
new file mode 100644
index 00000000000..f69cdc8ea32
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+ xmlns="http://www.eclipse.org/xwt/presentation">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}"
+ property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleType.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleType.xwt
new file mode 100644
index 00000000000..af4f251fc65
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets"
+ xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+ <ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+ </Composite>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeInstance.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeInstance.xwt
new file mode 100644
index 00000000000..3f64970baa4
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeInstance.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+ xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeRegistry.xwt b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeRegistry.xwt
new file mode 100644
index 00000000000..4730c3b86bb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeRegistry.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt"
+ xmlns:ppel="clr-namespace:org.eclipse.papyrus.views.properties.widgets.layout"
+ xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang"
+ xmlns:ppe="clr-namespace:org.eclipse.papyrus.views.properties.widgets">
+ <Composite.layout>
+ <ppel:PropertiesLayout></ppel:PropertiesLayout>
+ </Composite.layout>
+ <Composite>
+ <Composite.layout>
+ <ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+ </Composite.layout>
+ <ppe:MultiReference input="{Binding}"
+ property="layers:TypeRegistry:types" readOnly="true"></ppe:MultiReference>
+ </Composite>
+</Composite> \ No newline at end of file
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers/ui/Activator.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers/ui/Activator.java
new file mode 100644
index 00000000000..997ac204182
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers/ui/Activator.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.ui;
+
+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.layers.ui";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractCreateLayerExpressionHandler.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractCreateLayerExpressionHandler.java
new file mode 100644
index 00000000000..a2845f1a15d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractCreateLayerExpressionHandler.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+public abstract class AbstractCreateLayerExpressionHandler extends AbstractLayersCommand {
+
+ /**
+ * Value used to compute new names.
+ */
+ private static int creationCount = 0;
+
+ public AbstractCreateLayerExpressionHandler() {
+ super();
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+ *
+ * @param event
+ * @param context
+ * @param selections
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+ System.out.println( this.getClass().getSimpleName() + ".doExecute()");
+
+ if(!isEnabled(context, selections)) {
+ return;
+ }
+
+ // Get application
+ LayersStackApplication application;
+ try {
+ application = lookupLayersStackApplicationChecked(context);
+ } catch (NotFoundException e) {
+ // Silently fails
+ return;
+ } catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+ // Silently fails
+ return;
+ } catch (ServiceException e) {
+ // Silently fails
+ return;
+ }
+
+
+ // Create a layer !
+ LayerExpression layer = createLayer();
+ layer.setName("layer" + creationCount++);
+ layer.setApplication(application);
+
+ System.out.println( this.getClass().getSimpleName() + ". layerCreated");
+
+ // insert layer in selected object
+ Object selection = selections.get(0);
+ if(selection instanceof LayersContainer) {
+ LayersContainer stack = (LayersContainer)selection;
+ stack.addLayer(layer);
+ }
+// if(selection instanceof LayersStack) {
+// LayersStack stack = (LayersStack)selection;
+// stack.setLayers(layer);
+// }
+// else {
+// LayerOperator operator = (LayerOperator)selection;
+// operator.getLayers().add(layer);
+// }
+
+ }
+
+ /**
+ * This method must create the Layer that will be populated and inserted in parent.
+ * @return
+ */
+ protected abstract LayerExpression createLayer();
+
+
+ /**
+ * Return true if it is possible to attach aLyerStack.
+ */
+ @Override
+ public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+ if( selections.size() != 1) {
+ return false;
+ }
+ Object first = selections.get(0);
+ boolean res = (first instanceof LayerOperator) || (first instanceof LayersStack);
+ System.err.println("isEnable(" + res + ")");
+ return res;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayerStackCommand.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayerStackCommand.java
new file mode 100644
index 00000000000..2f224da9d37
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayerStackCommand.java
@@ -0,0 +1,235 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Base class for Commands on Layers.
+ * This class provide utility methods to find the current Layer, LayerStack, ...
+ * @author cedric dumoulin
+ *
+ */
+public abstract class AbstractLayerStackCommand extends AbstractHandler {
+
+ /**
+ * Constructor.
+ *
+ */
+ public AbstractLayerStackCommand() {
+ super();
+ }
+
+ /**
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ * @param event
+ * @return
+ * @throws ExecutionException
+ *
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ executeTransaction(event);
+
+ return null;
+ }
+
+ /**
+ * Execute as transaction
+ * @param event
+ */
+ private void executeTransaction(final ExecutionEvent event) {
+
+ // Get requested objects
+ final NotationDiagramHelper notationDiagramHelper;
+ TransactionalEditingDomain editingDomain;
+ try {
+ IEvaluationContext context = getIEvaluationContext(event);
+ notationDiagramHelper = lookupNotationDiagramHelperChecked(context);
+ editingDomain = lookupTransactionalEditingDomain(context);
+ } catch (NotFoundException e) {
+ // silently fails
+ return;
+ } catch (ServiceException e) {
+ // silently fails
+ return;
+ }
+
+
+ Command cmd = new RecordingCommand(editingDomain, getCommandName()) {
+
+ @Override
+ protected void doExecute() {
+ AbstractLayerStackCommand.this.doExecute(event, notationDiagramHelper);
+ }
+
+
+ };
+
+ editingDomain.getCommandStack().execute(cmd);
+
+ }
+
+ /**
+ * Get the name used in the {@link RecordingCommand}. This name will be visible in
+ * undo/redo.
+ *
+ * @return The command name to show.
+ */
+ public abstract String getCommandName();
+
+ /**
+ * Do the execution of the command.
+ * Subclass should implements this method.
+ * @param event
+ *
+ * @param notationDiagramHelper
+ */
+ protected abstract void doExecute(ExecutionEvent event, NotationDiagramHelper notationDiagramHelper);
+
+// /**
+// *
+// * @return
+// * @throws NotFoundException
+// */
+// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+//
+// return lookupLayersViewChecked().getLayerStackMngrChecked();
+//
+// }
+
+
+ protected IEvaluationContext getIEvaluationContext(ExecutionEvent event) throws NotFoundException {
+ try {
+ return (IEvaluationContext)event.getApplicationContext();
+ } catch (ClassCastException e) {
+ throw new NotFoundException("IEvaluationContext can't be found.");
+ }
+
+ }
+ /**
+ * Try to lookup the TransactionalEditingDomain.
+ * @return
+ * @throws ServiceException If the Editing domain can't be found.
+ */
+ protected TransactionalEditingDomain lookupTransactionalEditingDomain(IEvaluationContext context) throws ServiceException {
+
+ // Get page from the event !
+// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+ return ServiceUtilsForIEvaluationContext.getInstance().getTransactionalEditingDomain(context);
+ }
+
+ /**
+ * Called by framework. Need to set the enabled flag.
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#setEnabled(java.lang.Object)
+ *
+ * @param evaluationContext
+ */
+ @Override
+ public void setEnabled(Object evaluationContext) {
+
+ if( ! (evaluationContext instanceof IEvaluationContext)) {
+ setBaseEnabled(false);
+ System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ") - no context");
+ return;
+ }
+
+ IEvaluationContext context = (IEvaluationContext)evaluationContext;
+
+ try {
+ NotationDiagramHelper diagramHelper = lookupNotationDiagramHelperChecked(context);
+
+ // Ask the subclass
+ setBaseEnabled(isEnabled(diagramHelper));
+
+ } catch (ServiceException e) {
+ // Can't find ServiceRegistry: disable
+ setBaseEnabled( false);
+ } catch (NotFoundException e) {
+ // Can't find ServiceRegistry: disable
+ setBaseEnabled( false);
+ }
+
+
+ System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ")");
+ }
+
+ /**
+ * Return true if the action is enabled, false otherwise.
+ * Subclasses should implements this method. The default implementation return true.
+ * @param notationDiagramHelper
+ * @return
+ */
+ public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+ return true;
+ }
+
+ // /**
+ // *
+ // * @return
+ // * @throws NotFoundException
+ // */
+ // protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+ //
+ // return lookupLayersViewChecked().getLayerStackMngrChecked();
+ //
+ // }
+
+ /**
+ * Get the notation diagram helper.
+ * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+ *
+ * @return The
+ * @throws NotFoundException
+ * @throws ServiceException
+ */
+ protected NotationDiagramHelper lookupNotationDiagramHelperChecked(IEvaluationContext context) throws NotFoundException, ServiceException {
+
+
+ // Get page from the event !
+ // IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+ IEditorPart editor = ServiceUtilsForIEvaluationContext.getInstance().getNestedActiveIEditorPart(context);
+
+ if( ! (editor instanceof DiagramDocumentEditor) ) {
+ throw new NotFoundException("Selected editor do not contains Diagram");
+ }
+ DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor)editor;
+
+ Diagram diagram = diagramEditor.getDiagram();
+ if(diagram == null) {
+ throw new NotFoundException("Selected editor do not contains Diagram");
+ }
+
+ // Lookup the Layer model
+ LayersModel layersModel = (LayersModel)ServiceUtilsForIEvaluationContext.getInstance().getModelSet(context).getModel(LayersModel.MODEL_ID);
+ // Return a new instance of the Helper
+ return new NotationDiagramHelper(layersModel, diagram);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayersCommand.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayersCommand.java
new file mode 100644
index 00000000000..96e96a98d68
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayersCommand.java
@@ -0,0 +1,356 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Base class for Commands on Layers.
+ * This class provide utility methods to find the current Layer, LayerStack, ...
+ * @author cedric dumoulin
+ *
+ */
+public abstract class AbstractLayersCommand extends AbstractHandler {
+
+ /**
+ * Constructor.
+ *
+ */
+ public AbstractLayersCommand() {
+ super();
+ }
+
+ /**
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ * @param event
+ * @return
+ * @throws ExecutionException
+ *
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ // Get requested objects
+ IEvaluationContext context;
+ List<Object> selections;
+ try {
+ context = getIEvaluationContext(event);
+ selections = getSelections(context);
+ } catch (NotFoundException e) {
+ // silently fails
+ return null;
+ }
+
+
+ // Execute the command in 3 phases
+ if (!preExecute(event, context, selections) ) {
+ return null;
+ }
+ executeTransaction(event, context, selections);
+ postExecute(event, context, selections);
+
+ return null;
+ }
+
+ /**
+ * Method call prior to doExecute
+ * This method should be overloaded by subclass wishing to initialize the command
+ * outside of the transaction.
+ *
+ * @param event
+ * @param selections
+ * @param context
+ * @return true if the doExecute() should be called, false if the command should stop
+ */
+ protected boolean preExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) throws ExecutionException {
+ return true;
+ }
+
+ /**
+ * Method call after {@link #doExecute(ExecutionEvent, IEvaluationContext, List)}
+ * This method should be overloaded by subclass wishing to do some post-processing
+ * outside of the transaction.
+ *
+ * @param event
+ * @param selections
+ * @param context
+ */
+ protected void postExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) throws ExecutionException {
+ // TODO Auto-generated method stub
+
+ }
+
+
+ /**
+ * Execute as transaction
+ * @param event
+ * @param selections
+ * @param context
+ */
+ private void executeTransaction(ExecutionEvent event, final IEvaluationContext context, final List<Object> selections) {
+
+ // Get requested objects
+ final TransactionalEditingDomain editingDomain;
+ final ExecutionEvent finalEvent = event;
+ try {
+ editingDomain = lookupTransactionalEditingDomain(context);
+ } catch (ServiceException e) {
+ // silently fails
+ return;
+ }
+
+
+ Command cmd = new RecordingCommand(editingDomain, getCommandName()) {
+
+ @Override
+ protected void doExecute() {
+ AbstractLayersCommand.this.doExecute(finalEvent, context, selections);
+ }
+
+
+ };
+
+ editingDomain.getCommandStack().execute(cmd);
+
+ }
+
+ /**
+ * get the selected objects from the context.
+ * @param context
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ protected List<Object> getSelections(IEvaluationContext context) {
+ Object sel = context.getVariable("selection");
+ if(! (sel instanceof IStructuredSelection)) {
+ return Collections.emptyList();
+ }
+
+ IStructuredSelection structuredSelection = (IStructuredSelection)sel;
+
+ return structuredSelection.toList();
+ }
+
+ /**
+ * Get the name used in the {@link RecordingCommand}. This name will be visible in
+ * undo/redo.
+ *
+ * @return The command name to show.
+ */
+ public abstract String getCommandName();
+
+ /**
+ * Do the execution of the command.
+ * Subclass should implements this method.
+ *
+ * @param notationDiagramHelper
+ */
+ protected abstract void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections);
+
+// /**
+// *
+// * @return
+// * @throws NotFoundException
+// */
+// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+//
+// return lookupLayersViewChecked().getLayerStackMngrChecked();
+//
+// }
+
+
+ protected IEvaluationContext getIEvaluationContext(ExecutionEvent event) throws NotFoundException {
+ try {
+ return (IEvaluationContext)event.getApplicationContext();
+ } catch (ClassCastException e) {
+ throw new NotFoundException("IEvaluationContext can't be found.");
+ }
+
+ }
+ /**
+ * Try to lookup the TransactionalEditingDomain.
+ * @return
+ * @throws ServiceException If the Editing domain can't be found.
+ */
+ protected TransactionalEditingDomain lookupTransactionalEditingDomain(IEvaluationContext context) throws ServiceException {
+
+ // Get page from the event !
+// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+ return ServiceUtilsForIEvaluationContext.getInstance().getTransactionalEditingDomain(context);
+ }
+
+ /**
+ * Called by framework. Need to set the enabled flag.
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#setEnabled(java.lang.Object)
+ *
+ * @param evaluationContext
+ */
+ @Override
+ public void setEnabled(Object evaluationContext) {
+
+ if( ! (evaluationContext instanceof IEvaluationContext)) {
+ setBaseEnabled(false);
+ System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ") - no context");
+ return;
+ }
+
+ IEvaluationContext context = (IEvaluationContext)evaluationContext;
+
+ List<Object> selections = getSelections(context);
+ // Ask the subclass
+ setBaseEnabled(isEnabled(context, selections));
+
+
+ System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ")");
+ }
+
+ /**
+ * Return true if the action is enabled, false otherwise.
+ * Subclasses should implements this method. The default implementation return true.
+ * @param context
+ * @return
+ */
+ public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+ return true;
+ }
+
+ // /**
+ // *
+ // * @return
+ // * @throws NotFoundException
+ // */
+ // protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+ //
+ // return lookupLayersViewChecked().getLayerStackMngrChecked();
+ //
+ // }
+
+ /**
+ * lookup the notation diagram helper.
+ * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+ *
+ * @return The
+ * @throws NotFoundException
+ * @throws ServiceException
+ */
+ protected NotationDiagramHelper lookupNotationDiagramHelperChecked(IEvaluationContext context) throws NotFoundException, ServiceException {
+
+
+ // Get page from the event !
+// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+ IEditorPart editor = ServiceUtilsForIEvaluationContext.getInstance().getNestedActiveIEditorPart(context);
+
+ if( ! (editor instanceof DiagramDocumentEditor) ) {
+ throw new NotFoundException("Selected editor do not contains Diagram");
+ }
+ DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor)editor;
+
+ Diagram diagram = diagramEditor.getDiagram();
+ if(diagram == null) {
+ throw new NotFoundException("Selected editor do not contains Diagram");
+ }
+
+ // Lookup the Layer model
+ LayersModel layersModel = (LayersModel)ServiceUtilsForIEvaluationContext.getInstance().getModelSet(context).getModel(LayersModel.MODEL_ID);
+ // Return a new instance of the Helper
+ return new NotationDiagramHelper(layersModel, diagram);
+ }
+
+ /**
+ * lookup the LayerStack application object from context..
+ * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+ *
+ * @return The
+ * @throws NotFoundException
+ * @throws ServiceException
+ * @throws org.eclipse.papyrus.infra.core.resource.NotFoundException
+ */
+ protected LayersStackApplication lookupLayersStackApplicationChecked(IEvaluationContext context) throws NotFoundException, ServiceException, org.eclipse.papyrus.infra.core.resource.NotFoundException {
+
+ ModelSet modelSet = ServiceUtilsForIEvaluationContext.getInstance().getModelSet(context);
+ LayersModel model = (LayersModel)modelSet.getModelChecked(LayersModel.MODEL_ID);
+
+ return model.lookupLayerStackApplication();
+ }
+
+ // /**
+ // *
+ // * @return
+ // * @throws NotFoundException
+ // */
+ // protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+ //
+ // return lookupLayersViewChecked().getLayerStackMngrChecked();
+ //
+ // }
+
+ /**
+ * Get the notation diagram helper.
+ * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+ *
+ * @return The
+ * @throws NotFoundException
+ * @throws ServiceException
+ */
+ protected Diagram lookupNotationDiagramChecked(IEvaluationContext context) throws NotFoundException, ServiceException {
+
+ IEditorPart editor = ServiceUtilsForIEvaluationContext.getInstance().getNestedActiveIEditorPart(context);
+
+ if(!(editor instanceof DiagramDocumentEditor)) {
+ throw new NotFoundException("Selected editor do not contains Diagram"); //$NON-NLS-1$
+ }
+ DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor)editor;
+
+ Diagram diagram = diagramEditor.getDiagram();
+ if(diagram == null) {
+ throw new NotFoundException("Selected editor do not contains Diagram"); //$NON-NLS-1$
+ }
+
+ // Return a new instance of the Helper
+ return diagram;
+ }
+
+ /**
+ * Return true if the first element of the selection is instance of the specified type.
+ */
+ protected boolean selectionFirstElementInstanceOf(List<Object> selections, Class<?> type) {
+ if( selections.size() != 1) {
+ return false;
+ }
+ Object first = selections.get(0);
+ return type.isInstance(first);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachDiagramViewsToLayer.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachDiagramViewsToLayer.java
new file mode 100644
index 00000000000..029529d3f0f
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachDiagramViewsToLayer.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.notationmodel.edit.NotationItemProviderAdapterFactory;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
+import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory;
+
+
+/**
+ * Handler used to select multiples views to attach to the selected Layer.
+ * Property are proposed in a selectable tree dialog.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachDiagramViewsToLayer extends AbstractLayersCommand {
+
+ /**
+ * Constructor.
+ *
+ */
+ public AttachDiagramViewsToLayer() {
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Attach multiple views";
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+ *
+ * @param event
+ * @param context
+ * @param selections
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+
+ // check enable
+ if( ! isEnabled(context, selections)) {
+ return;
+ }
+
+ // Open the dialog to ask the new name
+ // TODO dialog should not be in the transaction !! put it outside !
+
+ try {
+ // Get the layer and application
+ LayersStackApplication application = lookupLayersStackApplicationChecked(context);
+ AbstractLayer layer = (AbstractLayer)getSelections(context).get(0);
+
+ // Get the diagram and the views
+ Diagram diagram = layer.getOwningLayersStack().getDiagram();
+
+
+ // Label and content providers
+
+ AdapterFactory domainAdapterFactory = new UMLItemProviderAdapterFactory();
+ AdapterFactory adapterFactory = new NotationItemProviderAdapterFactory(domainAdapterFactory);
+ ITreeContentProvider contentProvider = new AdapterFactoryContentProvider(adapterFactory);
+ ILabelProvider labelProvider = new AdapterFactoryLabelProvider(adapterFactory);
+
+ // Test of SpecificViewContentProvider that do exatly the same filtering
+// final Diagram diag2 = diagram;
+// ILabelProvider labelProvider = ServiceUtilsForIEvaluationContext.getInstance().getService(LabelProviderService.class, context).getLabelProvider();
+// ITreeContentProvider contentProvider = new SpecificViewContentProvider() {
+// @Override
+// public Object[] getElements(Object inputElement) {
+// // TODO Auto-generated method stub
+// return new EObject[]{ diag2};
+// }
+// };
+
+
+ CheckedTreeSelectionDialog dialog = new CheckedTreeSelectionDialog(Display.getCurrent().getActiveShell(), labelProvider, contentProvider);
+
+ dialog.setTitle("Diagram Views Selection");
+ dialog.setMessage("Select Views to attach to the current layer:");
+ dialog.setInput(diagram);
+ List<View> initialSelection = layer.getViews();
+ dialog.setInitialSelections(initialSelection.toArray(new View[0]));
+
+ if(dialog.open() != Window.OK) {
+ return;
+ }
+
+ // TODO: improve algorithm:
+ // use only the two list (or arrays) of initialSelection and finalSelection
+ // Walk the first, for each element,
+ // if the element is in the second list
+ // remove element in both list (set list[i]=null)
+ // else
+ // remove element from first list
+ // At the end,
+ // initialCollection contains unsetted elements (with nulls)
+ // finalSelection contains set elements (with nulls)
+ // Walk each array/list, and skip nulls.
+
+
+
+ // Process selected Properties
+ Object[] res = dialog.getResult();
+ // Create a list from the array. No better way ...
+ // In the same time, create unchanged and set lists
+ List<View> finalSelection = new ArrayList<View>(res.length);
+ List<View> unchangedProperties = new ArrayList<View>(initialSelection.size());
+ List<View> setProperties = new ArrayList<View>(finalSelection.size());
+
+ for( Object o : res ) {
+ // Create a clone list of the result
+ finalSelection.add((View)o);
+ // Create the unchanged and set list
+ if( initialSelection.contains(o)) {
+ unchangedProperties.add((View)o);
+ }
+ else {
+ setProperties.add((View)o);
+ }
+ }
+
+ // We also need the unset list
+ // Obtain it by removing unchanged from initialSelection
+ List<View> unsetProperties = new ArrayList<View>(initialSelection);
+ unsetProperties.removeAll(unchangedProperties);
+
+ // Remove unset views
+ for( View property : unsetProperties) {
+ System.out.println("unset view " + property.getElement());
+ layer.getViews().remove(property);
+ }
+
+ // add set instances
+ for( View property : setProperties) {
+ System.out.println("set Property " + property.getElement());
+ layer.getViews().add(property);
+ }
+
+ } catch (LayersException e) {
+ // silently fails
+ e.printStackTrace();
+ } catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+ // silently fails
+ e.printStackTrace();
+ } catch (ServiceException e) {
+ // silently fails
+ e.printStackTrace();
+ }
+
+
+ }
+
+ /**
+ * Return true if it is possible to attach a property.
+ */
+ @Override
+ public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+
+ return selectionFirstElementInstanceOf(selections, AbstractLayer.class);
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachLayerStackCommand.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachLayerStackCommand.java
new file mode 100644
index 00000000000..39b78f9f5d8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachLayerStackCommand.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerViewUtils;
+
+
+/**
+ * Add a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachLayerStackCommand extends AbstractLayerStackCommand implements IHandler {
+
+
+ /**
+ * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Attach Layer Stack";
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#doExecute(org.eclipse.papyrus.layers.application.NotationDiagramMngr)
+ *
+ * @param notationDiagramHelper
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, NotationDiagramHelper notationDiagramHelper) {
+ System.out.println( this.getClass().getSimpleName() + ".doExecute()");
+ notationDiagramHelper.attachLayersStack();
+
+ // ensure the Layers explorer is open
+// LayersExplorerViewUtils.openView(event);
+ }
+
+
+ /**
+ * Return true if it is possible to attach aLyerStack.
+ */
+ @Override
+ public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+ return ! notationDiagramHelper.isLayersStackAttached();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyFromListToLayer.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyFromListToLayer.java
new file mode 100644
index 00000000000..297345f76ca
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyFromListToLayer.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.ListSelectionDialog;
+
+
+/**
+ * Attach a property to the selected Layer.
+ * Property are proposed in a list.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachPropertyFromListToLayer extends AbstractLayersCommand {
+
+ /**
+ * Constructor.
+ *
+ */
+ public AttachPropertyFromListToLayer() {
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Attach a property";
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+ *
+ * @param event
+ * @param context
+ * @param selections
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+ // check enable
+ if( ! isEnabled(context, selections)) {
+ return;
+ }
+
+ // Open the dialog to ask the new name
+ // TODO dialog should not be in the transaction !! put it outside !
+
+ try {
+ // Get the layer and application
+ LayersStackApplication application = lookupLayersStackApplicationChecked(context);
+ AbstractLayer layer = (AbstractLayer)getSelections(context).get(0);
+
+ // Get the list of available properties
+ Property[] properties = application.getPropertyRegistry().getProperties().toArray(new Property[0]);
+
+ IStructuredContentProvider contentProvider = new MyContentProvider();
+ ILabelProvider labelProvider = new MyLabelProvider();
+
+ ListSelectionDialog dialog = new ListSelectionDialog(Display.getCurrent().getActiveShell(), properties, contentProvider, labelProvider, "Select properties to attach");
+
+ List<Property> initialSelection = layer.getAttachedProperties();
+ dialog.setInitialSelections(initialSelection.toArray(new Property[initialSelection.size()]));
+
+ if(dialog.open() != Window.OK) {
+ return;
+ }
+
+ // TODO: improve algorithm:
+ // use only the two list (or arrays) of initialSelection and finalSelection
+ // Walk the first, for each element,
+ // if the element is in the second list
+ // remove element in both list (set list[i]=null)
+ // else
+ // remove element from first list
+ // At the end,
+ // initialCollection contains unsetted elements (with nulls)
+ // finalSelection contains set elements (with nulls)
+ // Walk each array/list, and skip nulls.
+
+
+
+ // Process selected Properties
+ Object[] res = dialog.getResult();
+ // Create a list from the array. No better way ...
+ // In the same time, create unchanged and set lists
+ List<Property> finalSelection = new ArrayList<Property>(res.length);
+ List<Property> unchangedProperties = new ArrayList<Property>(initialSelection.size());
+ List<Property> setProperties = new ArrayList<Property>(finalSelection.size());
+
+ for( Object o : res ) {
+ // Create a clone list of the result
+ finalSelection.add((Property)o);
+ // Create the unchanged and set list
+ if( initialSelection.contains(o)) {
+ unchangedProperties.add((Property)o);
+ }
+ else {
+ setProperties.add((Property)o);
+ }
+ }
+
+ // We also need the unset list
+ // Obtain it by removing unchanged from initialSelection
+ List<Property> unsetProperties = new ArrayList<Property>(initialSelection);
+ unsetProperties.removeAll(unchangedProperties);
+
+ // Remove unset instances
+ for( Property property : unsetProperties) {
+ System.out.println("unset Property " + property.getName());
+ layer.removePropertyInstance(property);
+ }
+
+ // add set instances
+ for( Property property : setProperties) {
+ System.out.println("set Property " + property.getName());
+ layer.addPropertyInstance(property);
+ }
+
+ } catch (LayersException e) {
+ // silently fails
+ e.printStackTrace();
+ } catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+ // silently fails
+ e.printStackTrace();
+ } catch (ServiceException e) {
+ // silently fails
+ e.printStackTrace();
+ }
+
+
+ }
+
+ /**
+ * Return true if it is possible to attach a property.
+ */
+ @Override
+ public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+
+ return selectionFirstElementInstanceOf(selections, AbstractLayer.class);
+ }
+
+ private class MyContentProvider implements IStructuredContentProvider {
+
+ public Object[] getElements(Object inputElement) {
+ return (Property[])inputElement;
+ }
+
+ public void dispose() {
+
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+
+ }
+
+ private class MyLabelProvider extends LabelProvider {
+
+
+ @Override
+ public String getText(Object element) {
+ return ((Property)element).getName();
+ }
+
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyToLayer.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyToLayer.java
new file mode 100644
index 00000000000..11f8f6c3ff3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyToLayer.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.swt.widgets.Display;
+
+
+/**
+ * Attach a property to the selected Layer
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachPropertyToLayer extends AbstractLayersCommand {
+
+ /**
+ * Constructor.
+ *
+ */
+ public AttachPropertyToLayer() {
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Attach a property";
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+ *
+ * @param event
+ * @param context
+ * @param selections
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+ // check enable
+ if( ! isEnabled(context, selections)) {
+ return;
+ }
+
+ // Open the dialog to ask the new name
+ // TODO dialog should not be in the transaction !! put it outside !
+ String currentName = "";
+ String newName = null;
+ InputDialog dialog = new InputDialog(Display.getCurrent().getActiveShell(), "Attach a Property to Layer", "Enter the name of an existing property", currentName, null);
+ if(dialog.open() == Window.OK) {
+ newName = dialog.getValue();
+ if(newName == null || newName.length() <= 0) {
+ return;
+ }
+ } else {
+ // cancelled
+ return;
+ }
+
+ try {
+ LayersStackApplication application = lookupLayersStackApplicationChecked(context);
+ Property property = application.getPropertyRegistry().getProperty(newName);
+ // Get the layer
+ AbstractLayer layer = (AbstractLayer)getSelections(context).get(0);
+ layer.addPropertyInstance(property);
+ } catch (LayersException e) {
+ // silently fails
+ e.printStackTrace();
+ } catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+ // silently fails
+ e.printStackTrace();
+ } catch (ServiceException e) {
+ // silently fails
+ e.printStackTrace();
+ }
+
+
+ }
+
+ /**
+ * Return true if it is possible to attach a property.
+ */
+ @Override
+ public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+
+ return selectionFirstElementInstanceOf(selections, AbstractLayer.class);
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerHandler.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerHandler.java
new file mode 100644
index 00000000000..858296153b0
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerHandler.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+
+/**
+ * Create a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateLayerHandler extends AbstractCreateLayerExpressionHandler implements IHandler {
+
+
+ /**
+ * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Create Layer";
+ }
+
+
+ /**
+ * @return
+ */
+ @Override
+ protected LayerExpression createLayer() {
+ Layer layer = LayersFactory.eINSTANCE.createLayer();
+ return layer;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerOperatorsFromParameter.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerOperatorsFromParameter.java
new file mode 100644
index 00000000000..cf99c41fb58
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerOperatorsFromParameter.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class CreateLayerOperatorsFromParameter extends AbstractLayersCommand {
+
+ /**
+ * Value used to compute new names.
+ */
+ private static int creationCount = 0;
+
+ /**
+ * ID of the layer to create
+ */
+ private String newLayerID;
+
+ /**
+ * the application object, if found
+ */
+ private LayersStackApplication application;
+
+ /**
+ *
+ * Constructor.
+ *
+ */
+ public CreateLayerOperatorsFromParameter() {
+ super();
+ }
+
+ /**
+ * Prepare the execution of the command
+ *
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#preExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+ *
+ * @param event
+ * @param context
+ * @param selections
+ * @return
+ * @throws ExecutionException
+ */
+ @Override
+ protected boolean preExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) throws ExecutionException {
+
+ if(!isEnabled(context, selections)) {
+ return false;
+ }
+
+ // Get command parameters
+ newLayerID = event.getParameter("org.eclipse.papyrus.layers.ui.createLayerOperator.parameters");
+ System.err.println("Create Layer Operators '" + newLayerID + "'.");
+
+ // Get application
+ try {
+ application = lookupLayersStackApplicationChecked(context);
+ } catch (NotFoundException e) {
+ // Silently fails
+ return false;
+ } catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+ // Silently fails
+ return false;
+ } catch (ServiceException e) {
+ // Silently fails
+ return false;
+ }
+
+
+ return true;
+ }
+ /**
+ *
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+ *
+ * @param event
+ * @param context
+ * @param selections
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+ System.out.println( this.getClass().getSimpleName() + ".doExecute()");
+
+ // Create a layer !
+ AbstractLayerOperator layerOperator;
+ try {
+ layerOperator = application.getLayerOperatorDescriptorRegistry().createLayerOperator(newLayerID);
+ layerOperator.setName("layer" + creationCount++);
+ layerOperator.setApplication(application);
+ } catch (LayersException e) {
+// e.printStackTrace();
+ System.err.println("Log - " + this.getClass().getName()
+ + " - " + e.getMessage());
+ return;
+ }
+
+ // insert layer in selected object
+ Object selection = selections.get(0);
+ if(selection instanceof LayersStack) {
+ LayersStack stack = (LayersStack)selection;
+ stack.setLayers(layerOperator);
+ }
+ else {
+ LayerOperator operator = (LayerOperator)selection;
+ operator.getLayers().add(layerOperator);
+ }
+
+ }
+
+ /**
+ * Return true if it is possible to attach aLyerStack.
+ */
+ @Override
+ public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+ if( selections.size() != 1) {
+ return false;
+ }
+ Object first = selections.get(0);
+ boolean res = (first instanceof LayerOperator) || (first instanceof LayersStack);
+ System.err.println("isEnable(" + res + ")");
+ return res;
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Create Layer Operator";
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateRegExpLayerHandler.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateRegExpLayerHandler.java
new file mode 100644
index 00000000000..0681ae89e55
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateRegExpLayerHandler.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+
+
+/**
+ * Create a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateRegExpLayerHandler extends
+AbstractCreateLayerExpressionHandler implements IHandler {
+
+
+ /**
+ * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Create RegExp Layer";
+ }
+
+
+ /**
+ * @return
+ */
+ @Override
+ protected LayerExpression createLayer() {
+ RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+ return layer;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateStackedLayerOperatorHandler.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateStackedLayerOperatorHandler.java
new file mode 100644
index 00000000000..80b329170e3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateStackedLayerOperatorHandler.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+
+/**
+ * Create a {@link TopLayerOperator}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateStackedLayerOperatorHandler extends AbstractCreateLayerExpressionHandler implements IHandler {
+
+ @Override
+ protected LayerExpression createLayer() {
+ StackedLayerOperator operator = LayersFactory.eINSTANCE.createStackedLayerOperator();
+ return operator;
+ }
+
+ @Override
+ public String getCommandName() {
+ return "Create Stacked Layer Operator" ;
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateTopLayerOperatorHandler.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateTopLayerOperatorHandler.java
new file mode 100644
index 00000000000..7412d925b1c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateTopLayerOperatorHandler.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+
+/**
+ * Create a {@link TopLayerOperator}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateTopLayerOperatorHandler extends AbstractCreateLayerExpressionHandler implements IHandler {
+
+ @Override
+ protected LayerExpression createLayer() {
+ TopLayerOperator operator = LayersFactory.eINSTANCE.createTopLayerOperator();
+ return operator;
+ }
+
+ @Override
+ public String getCommandName() {
+ return "Create Top Layer Operator" ;
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DeleteItemHandler.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DeleteItemHandler.java
new file mode 100644
index 00000000000..cd62b7a52a8
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DeleteItemHandler.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * Handle a "Delete Item" command.
+ * Use the EMF {@link RemoveCommand}
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DeleteItemHandler extends AbstractLayersCommand {
+
+ /**
+ *
+ * Constructor.
+ *
+ */
+ public DeleteItemHandler() {
+ super();
+ }
+
+ /**
+ * Prepare the execution of the command
+ *
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#preExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+ *
+ * @param event
+ * @param context
+ * @param selections
+ * @return
+ * @throws ExecutionException
+ */
+ @Override
+ protected boolean preExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) throws ExecutionException {
+
+ if(!isEnabled(context, selections)) {
+ return false;
+ }
+
+
+ return true;
+ }
+ /**
+ *
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+ *
+ * @param event
+ * @param context
+ * @param selections
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+ System.out.println( this.getClass().getSimpleName() + ".doExecute()");
+
+ // insert layer in selected object
+ Object selection = selections.get(0);
+
+ TransactionalEditingDomain domain;
+ try {
+ domain = lookupTransactionalEditingDomain(context);
+ } catch (ServiceException e) {
+ // sylently fails
+ return;
+ }
+ Command removeCmd = RemoveCommand.create(domain, selection);
+ // We are already in a transaction
+ removeCmd.execute();
+
+ }
+
+ /**
+ * Delete is enable on all items except the root layer.
+ */
+ @Override
+ public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+ if( selections.size() != 1) {
+ return false;
+ }
+ Object first = selections.get(0);
+ boolean res = (first instanceof LayerExpression && ! ( ((EObject)first).eContainer() instanceof LayersStack ) );
+ return res;
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Create Layer Operator";
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DetachLayerStackCommand.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DetachLayerStackCommand.java
new file mode 100644
index 00000000000..083a639d0cb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DetachLayerStackCommand.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+
+
+/**
+ * Add a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DetachLayerStackCommand extends AbstractLayerStackCommand implements IHandler {
+
+ /**
+ * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Detach Layer Stack";
+ }
+
+ /**
+ * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#doExecute(org.eclipse.papyrus.layers.application.NotationDiagramMngr)
+ *
+ * @param notationDiagramMngr
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, NotationDiagramHelper notationDiagramHelper) {
+ System.out.println( this.getClass().getSimpleName() + ".doExecute()");
+ notationDiagramHelper.removeLayersStack();
+ }
+
+
+ /**
+ * Return true if it is possible to detach aLyerStack.
+ */
+ @Override
+ public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+ return notationDiagramHelper.isLayersStackAttached();
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/LayerOperatorsParameterValues.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/LayerOperatorsParameterValues.java
new file mode 100644
index 00000000000..570bf509be6
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/LayerOperatorsParameterValues.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.commands.IParameterValues;
+
+
+/**
+ * Class used to return a list of LayersOperator names. This names are then used
+ * to create the corresponding LayerOperator.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerOperatorsParameterValues implements IParameterValues {
+
+ /**
+ * Constructor.
+ *
+ */
+ public LayerOperatorsParameterValues() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @see org.eclipse.core.commands.IParameterValues#getParameterValues()
+ *
+ * @return
+ */
+ @Override
+ public Map<String, String> getParameterValues() {
+ Map<String, String> res = new HashMap<String, String>();
+
+ res.put("Top Layer Operator", "TopLayerOperator");
+ res.put("Stacked Layer Operator", "StackedLayeroperator");
+ return res;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/package-info.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/package-info.java
new file mode 100644
index 00000000000..6163fa9466e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/package-info.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ * @author dumoulin
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.commands;
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayerExplorerPageBookView.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayerExplorerPageBookView.java
new file mode 100644
index 00000000000..11f9d109852
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayerExplorerPageBookView.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.explorer;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.papyrus.views.modelexplorer.ModelExplorerView;
+import org.eclipse.papyrus.views.modelexplorer.core.ui.pagebookview.MultiViewPageBookView;
+import org.eclipse.papyrus.views.modelexplorer.core.ui.pagebookview.ViewPartPage;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.part.PageBookView;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+
+/**
+ * A {@link PageBookView} allowing to render multiple LayerExplorerPage in one Eclipse View.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerExplorerPageBookView extends MultiViewPageBookView {
+
+ /** ID of the view, as given in the plugin.xml file */
+ public static final String VIEW_ID = "org.eclipse.papyrus.views.layers.layersexplorer"; //$NON-NLS-1$
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected PageRec doCreatePage(IWorkbenchPart part) {
+
+ // part is of type IMultiDiagramEditor (because of isImportant() )
+
+ ViewPartPage page = new LayersExplorerPage();
+
+ // Init the page, and so the View
+ initPage(page, part);
+ page.createControl(getPageBook());
+ return new PageRec(part, page);
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Object getAdapter(Class adapter) {
+
+ if(IPropertySheetPage.class == adapter) {
+ // Do not test if tabbedPropertySheetPage is null before calling new
+ // this is managed by Eclipse which only call current method when necessary
+// return new TabbedPropertySheetPage(this);
+ }
+
+ return super.getAdapter(adapter);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getContributorId() {
+ // return Activator.PLUGIN_ID;
+ return "TreeOutlinePage"; //$NON-NLS-1$
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void gotoMarker(IMarker marker) {
+ String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+ if(uriAttribute != null) {
+ URI uri = URI.createURI(uriAttribute);
+ IViewPart viewPart = getActiveView();
+ if(viewPart instanceof ModelExplorerView) {
+ LayersExplorerView modelExplorerView = (LayersExplorerView)viewPart;
+// EditingDomain domain = modelExplorerView.getEditingDomain();
+// EObject eObject = domain.getResourceSet().getEObject(uri, false);
+// if(eObject != null) {
+// CommonViewer treeViewer = ((ModelExplorerView)viewPart).getCommonViewer();
+// // The common viewer is in fact a tree viewer
+// // bug enhancement: use function in ModelExplorerView instead of findElementForEObject
+// ModelExplorerView.reveal(Lists.newArrayList(eObject), treeViewer);
+ }
+ }
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerPage.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerPage.java
new file mode 100644
index 00000000000..fc2fc78f85e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerPage.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.explorer;
+
+import org.eclipse.papyrus.views.modelexplorer.ModelExplorerView;
+import org.eclipse.papyrus.views.modelexplorer.core.ui.pagebookview.ViewPartPage;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+/**
+ * A page of the {@link LayerExplorerPageBookView}.
+ * This page contains a {@link LayersExplorerView} rendering an Explorer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersExplorerPage extends ViewPartPage {
+
+ /**
+ * Constructor.
+ *
+ */
+ public LayersExplorerPage() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Create the Viewer for the requested part.
+ * Here, create a {@link LayersExplorerView} for a Papyrus main editor.
+ *
+ * @param part
+ * The part to associate to the Viewer.
+ * @return
+ */
+ @Override
+ protected IViewPart createViewer(IWorkbenchPart part) {
+ // Part is of the right type because of call to isImportant()
+ return null;
+// return new LayersExplorerView((IMultiDiagramEditor)part);
+ }
+
+ /**
+ * Create control of the inner view
+ *
+ * @see org.eclipse.ui.part.Page#createControl(org.eclipse.swt.widgets.Composite)
+ *
+ * @param parent
+ */
+ @Override
+ public void createControl(Composite parent) {
+ getViewer().createPartControl(parent);
+ }
+
+ /**
+ * Return the control
+ *
+ * @see org.eclipse.papyrus.views.modelexplorer.core.ui.pagebookview.ViewPartPage#getControl()
+ *
+ * @return
+ */
+ @Override
+ public Control getControl() {
+ return ((ModelExplorerView)getViewer()).getControl();
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerView.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerView.java
new file mode 100644
index 00000000000..e25917943db
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerView.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.explorer;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.ViewPart;
+
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersExplorerView extends ViewPart {
+
+ @Override
+ public void createPartControl(Composite parent) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/AttachDiagramSelectedItemsToCurrentLayer.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/AttachDiagramSelectedItemsToCurrentLayer.java
new file mode 100644
index 00000000000..5b1635f264e
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/AttachDiagramSelectedItemsToCurrentLayer.java
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.handlers;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerView;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerViewUtils;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Attach the items selected in the diagram to the current Layer.
+ * The current layer is the layer currently selected in the {@link LayersExplorerView}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachDiagramSelectedItemsToCurrentLayer extends AbstractLayersCommand {
+
+ /**
+ *
+ */
+ @Override
+ public String getCommandName() {
+ return "Attach Selected Items";
+ }
+
+ /**
+ *
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+ // TODO Auto-generated method stub
+
+
+ List<View> diagramSelectedViews;
+ Layer currentLayer;
+ try {
+ diagramSelectedViews = getSelectedViewsFromCurrentDiagramEditor(context);
+ currentLayer = getSelectedLayerFromLayerExplorer(context);
+ } catch (NotFoundException e) {
+ // fail
+ System.err.println("ERROR - " + this.getClass().getName() + " - " +e.getMessage());
+ return;
+ }
+
+ System.out.println("selected views=" + diagramSelectedViews);
+ System.out.println("selected layer=" + currentLayer.getName());
+
+ currentLayer.getViews().addAll(diagramSelectedViews);
+ }
+
+ /**
+ * Get the currently selected layer from the LayerExplorer.
+ * Throws an exception if not found.
+ *
+ * @param context
+ * @return
+ */
+ private Layer getSelectedLayerFromLayerExplorer(IEvaluationContext context) throws NotFoundException {
+
+
+ LayersExplorerView layersExplorerView = LayersExplorerViewUtils.findView(context);
+ ISelection selection;
+ try {
+ selection = layersExplorerView.getSite().getSelectionProvider().getSelection();
+ } catch (NullPointerException e) {
+ // Can't get a selection
+ throw new NotFoundException("Can't get selection object from LayersExplorerView" + e); //$NON-NLS-1$
+ }
+
+ if(! (selection instanceof ITreeSelection)) {
+ throw new NotFoundException("No selection in LayersExplorerView"); //$NON-NLS-1$
+ }
+
+ ITreeSelection treeSelection = (ITreeSelection)selection;
+
+ Object firstSelection = treeSelection.getFirstElement();
+ if( ! (firstSelection instanceof Layer) ) {
+ throw new NotFoundException("LayersExplorerView first selection should be of type 'Layer'"); //$NON-NLS-1$
+ }
+ return (Layer)firstSelection;
+ }
+
+ /**
+ * Get all selected Views in the currently active diagram.
+ * If no diagram is active, throw an exception.
+ *
+ * @param context
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ private List<View> getSelectedViewsFromCurrentDiagramEditor( IEvaluationContext context ) throws NotFoundException {
+ // TODO Auto-generated method stub
+
+ DiagramDocumentEditor diagramEditor = getNestedActiveDiagramDocumentEditor(context);
+
+ ISelection selection = diagramEditor.getSite().getSelectionProvider().getSelection();
+
+ if(! (selection instanceof IStructuredSelection || selection.isEmpty() )) {
+ return Collections.emptyList();
+ }
+
+ IStructuredSelection structuredSelection = (IStructuredSelection)selection;
+
+ // Get the views from the selected part
+ List<View> result = new ArrayList<View>(structuredSelection.size());
+// for( Object obj : structuredSelection.toList() ) {
+// if( obj instanceof GraphicalEditPart ) {
+// GraphicalEditPart part = (GraphicalEditPart)obj;
+// View view = part.getNotationView();
+// result.add(view);
+// }
+// }
+ for( Object obj : structuredSelection.toList() ) {
+ // Adapt the selected object to a View.
+ View view = (View)Platform.getAdapterManager().getAdapter(obj, View.class);
+ if( view != null) {
+ result.add(view);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Get the active DiagramDocumentEditor.
+ * Throw an exception if not found.
+ *
+ * @param context
+ * @return
+ * @throws NotFoundException
+ */
+ private DiagramDocumentEditor getNestedActiveDiagramDocumentEditor( IEvaluationContext context) throws NotFoundException {
+
+ IEditorPart editor;
+ try {
+ editor = ServiceUtilsForIEvaluationContext.getInstance().getNestedActiveIEditorPart(context);
+ } catch (ServiceException e) {
+ throw new NotFoundException("Selected editor do not provides ServiceRegistry", e); //$NON-NLS-1$
+ }
+
+ if(!(editor instanceof DiagramDocumentEditor)) {
+ throw new NotFoundException("Selected editor do not contains Diagram"); //$NON-NLS-1$
+ }
+
+ return (DiagramDocumentEditor)editor;
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/CreateAllViewsDerivedLayerHandler.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/CreateAllViewsDerivedLayerHandler.java
new file mode 100644
index 00000000000..942c72b202b
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/CreateAllViewsDerivedLayerHandler.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.handlers;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers3.ui.commands.AbstractCreateLayerExpressionHandler;
+
+
+/**
+ * Create a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateAllViewsDerivedLayerHandler extends AbstractCreateLayerExpressionHandler implements IHandler {
+
+
+ /**
+ * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+ *
+ * @return
+ */
+ @Override
+ public String getCommandName() {
+ return "Create RegExp Layer";
+ }
+
+
+ /**
+ * @return
+ */
+ @Override
+ protected LayerExpression createLayer() {
+ AllViewsDerivedLayer layer = LayersFactory.eINSTANCE.createAllViewsDerivedLayer();
+ return layer;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/OpenLayerExplorerHandler.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/OpenLayerExplorerHandler.java
new file mode 100644
index 00000000000..2e3d4212eb3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/OpenLayerExplorerHandler.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.handlers;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerViewUtils;
+
+/**
+ * Open Layer Explorer ui handler.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class OpenLayerExplorerHandler extends AbstractHandler {
+
+ /**
+ *
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ LayersExplorerViewUtils.openView(event);
+
+ return null;
+ }
+
+
+ @Override
+ public void setEnabled(Object evaluationContext) {
+
+ //
+ if(evaluationContext==null) {
+ setBaseEnabled(false);
+ return;
+
+ }
+
+ LayersExplorerViewUtils.isViewOpened((IEvaluationContext)evaluationContext);
+ setBaseEnabled(true);
+ super.setEnabled(evaluationContext);
+ }
+
+ /**
+ *
+ * @param event
+ * @return
+ * @throws NotFoundException
+ */
+ protected IEvaluationContext getIEvaluationContext(ExecutionEvent event) throws NotFoundException {
+ try {
+ return (IEvaluationContext)event.getApplicationContext();
+ } catch (ClassCastException e) {
+ throw new NotFoundException("IEvaluationContext can't be found.");
+ }
+
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/RemoveDiagramSelectedItemsFromCurrentLayer.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/RemoveDiagramSelectedItemsFromCurrentLayer.java
new file mode 100644
index 00000000000..9fc89938c78
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/RemoveDiagramSelectedItemsFromCurrentLayer.java
@@ -0,0 +1,179 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.handlers;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerView;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerViewUtils;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Remove the items selected in the diagram from the current Layer.
+ * The current layer is the layer currently selected in the {@link LayersExplorerView}.
+ * TODO Factorize methods common with {@link AttachDiagramSelectedItemsToCurrentLayer} in a parent class.
+ * TODO use the {@link #preExecute(ExecutionEvent, IEvaluationContext, List)} method to get the requested selections.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class RemoveDiagramSelectedItemsFromCurrentLayer extends AbstractLayersCommand {
+
+ /**
+ *
+ */
+ @Override
+ public String getCommandName() {
+ return "Attach Selected Items";
+ }
+
+ /**
+ *
+ */
+ @Override
+ protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+ // TODO Auto-generated method stub
+
+
+ List<View> diagramSelectedViews;
+ Layer currentLayer;
+ try {
+ diagramSelectedViews = getSelectedViewsFromCurrentDiagramEditor(context);
+ currentLayer = getSelectedLayerFromLayerExplorer(context);
+ } catch (NotFoundException e) {
+ // fail
+ System.err.println("ERROR - " + this.getClass().getName() + " - " +e.getMessage());
+ return;
+ }
+
+ System.out.println("selected views=" + diagramSelectedViews);
+ System.out.println("selected layer=" + currentLayer.getName());
+
+ currentLayer.getViews().removeAll(diagramSelectedViews);
+ }
+
+ /**
+ * Get the currently selected layer from the LayerExplorer.
+ * Throws an exception if not found.
+ *
+ * @param context
+ * @return
+ */
+ private Layer getSelectedLayerFromLayerExplorer(IEvaluationContext context) throws NotFoundException {
+
+
+ LayersExplorerView layersExplorerView = LayersExplorerViewUtils.findView(context);
+ ISelection selection;
+ try {
+ selection = layersExplorerView.getSite().getSelectionProvider().getSelection();
+ } catch (NullPointerException e) {
+ // Can't get a selection
+ throw new NotFoundException("Can't get selection object from LayersExplorerView" + e); //$NON-NLS-1$
+ }
+
+ if(! (selection instanceof ITreeSelection)) {
+ throw new NotFoundException("No selection in LayersExplorerView"); //$NON-NLS-1$
+ }
+
+ ITreeSelection treeSelection = (ITreeSelection)selection;
+
+ Object firstSelection = treeSelection.getFirstElement();
+ if( ! (firstSelection instanceof Layer) ) {
+ throw new NotFoundException("LayersExplorerView first selection should be of type 'Layer'"); //$NON-NLS-1$
+ }
+ return (Layer)firstSelection;
+ }
+
+ /**
+ * Get all selected Views in the currently active diagram.
+ * If no diagram is active, throw an exception.
+ *
+ * @param context
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ private List<View> getSelectedViewsFromCurrentDiagramEditor( IEvaluationContext context ) throws NotFoundException {
+ // TODO Auto-generated method stub
+
+ DiagramDocumentEditor diagramEditor = getNestedActiveDiagramDocumentEditor(context);
+
+ ISelection selection = diagramEditor.getSite().getSelectionProvider().getSelection();
+
+ if(! (selection instanceof IStructuredSelection || selection.isEmpty() )) {
+ return Collections.emptyList();
+ }
+
+ IStructuredSelection structuredSelection = (IStructuredSelection)selection;
+
+ // Get the views from the selected part
+ List<View> result = new ArrayList<View>(structuredSelection.size());
+// for( Object obj : structuredSelection.toList() ) {
+// if( obj instanceof GraphicalEditPart ) {
+// GraphicalEditPart part = (GraphicalEditPart)obj;
+// View view = part.getNotationView();
+// result.add(view);
+// }
+// }
+ for( Object obj : structuredSelection.toList() ) {
+ // Adapt the selected object to a View.
+ View view = (View)Platform.getAdapterManager().getAdapter(obj, View.class);
+ if( view != null) {
+ result.add(view);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Get the active DiagramDocumentEditor.
+ * Throw an exception if not found.
+ *
+ * @param context
+ * @return
+ * @throws NotFoundException
+ */
+ private DiagramDocumentEditor getNestedActiveDiagramDocumentEditor( IEvaluationContext context) throws NotFoundException {
+
+ IEditorPart editor;
+ try {
+ editor = ServiceUtilsForIEvaluationContext.getInstance().getNestedActiveIEditorPart(context);
+ } catch (ServiceException e) {
+ throw new NotFoundException("Selected editor do not provides ServiceRegistry", e); //$NON-NLS-1$
+ }
+
+ if(!(editor instanceof DiagramDocumentEditor)) {
+ throw new NotFoundException("Selected editor do not contains Diagram"); //$NON-NLS-1$
+ }
+
+ return (DiagramDocumentEditor)editor;
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/utils/HandlersUtils.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/utils/HandlersUtils.java
new file mode 100644
index 00000000000..e22fcabdcde
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/utils/HandlersUtils.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.utils;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtilsForWorkbenchPage;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * Set of utilities methods for handlers {@link AbstractHandler}.
+ * @author cedric dumoulin
+ *
+ */
+public class HandlersUtils {
+
+ /**
+ * Constructor.
+ *
+ */
+ public HandlersUtils() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Get the diagram associated to the currently selected editor.
+ * Throw events if no diagram is associated.
+ * <br>
+ * Warnings: This method is for handlers only. It can return unpredictable
+ * results if used during the application initialization phase.
+ *
+ * @return
+ * @throws NotFoundException
+ * @throws ServiceException
+ */
+ public Diagram getDiagramFromCurrentEditor() throws ServiceException, NotFoundException {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ if( page == null)
+ throw new NotFoundException("No active IWorkbenchPage");
+
+ IEditorPart editor = ServiceUtilsForWorkbenchPage.getInstance().getNestedActiveIEditorPart(page);
+
+ if( ! (editor instanceof DiagramDocumentEditor) ) {
+ throw new NotFoundException("Selected editor do not contains Diagram");
+ }
+ DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor)editor;
+
+ Diagram diagram = diagramEditor.getDiagram();
+ if(diagram == null) {
+ throw new NotFoundException("Selected editor do not contains Diagram");
+ }
+
+ return diagram;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerView.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerView.java
new file mode 100644
index 00000000000..ef98fff830d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerView.java
@@ -0,0 +1,692 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.view;
+
+import javax.imageio.spi.ServiceRegistry;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.resource.NotFoundException;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IEditorPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IPageChangedListener;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainerChangedListener;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.SashWindowsEventsProvider;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtils;
+import org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener;
+import org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+
+/**
+ * A view showing a Layers Explorer for the currently selected Papyrus Page.
+ *
+ * TODO
+ * Refresh the explorer when a LayersStack is added to a diagram.
+ * To do that, we need to listen to LayersStack added event. The
+ * notifier is linked to the current LayerModel, thus, we need to track it when the
+ * container change.
+ * Each time the container change, we get the attached {@link LayersStackAndApplicationLifeCycleEventNotifier} and
+ * we listen to it. Before, we deregister from the old notifier.
+ *
+ * <br>
+ * Events
+ * <ul>
+ * <li>Editor page changed</li>
+ * <li>Container changed - container can be null</li>
+ * <li>LayersStack added</li>
+ * <li>LayersStack removed</li>
+ * <li></li>
+ * </ul>
+ * <br>
+ * State Machine
+ * <ul>
+ * <li>NoContainer</li>
+ * <li>ContainerAndLayersStack</li>
+ * <li>ContainerNoLayerStack</li>
+ * <li></li>
+ * <li></li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersExplorerView extends ViewPart implements ITabbedPropertySheetPageContributor {
+
+ private Label nameLabel;
+ private Label containerLabel;
+
+ /**
+ * The {@link LayersModel} associated to the current editor.
+ * Can be null if no Papyrus editor is associated.
+ * Set when the container is changed.
+ */
+ private LayersModel currentLayersModel = null;
+
+ /**
+ * The {@link ServicesRegistry} associated to the current editor.
+ * Can be null if no Papyrus editor is associated.
+ * Set when the container is changed.
+ */
+ private ServicesRegistry currentServicesRegistry = null;
+
+ protected SashWindowsEventsProvider sashEventsProvider;
+
+ protected IPageChangedListener pageChangedListener = new IPageChangedListener() {
+
+ @Override
+ public void pageChanged(IPage newPage) {
+
+ setActivePage(newPage);
+
+ }
+ };
+
+ protected ISashWindowsContainerChangedListener containerChangedListener = new ISashWindowsContainerChangedListener() {
+
+ @Override
+ public void sashWindowsContainerChanged(ISashWindowsContainer newContainer) {
+
+ activeSashWindowContainerChanged(newContainer);
+ }
+ };
+
+ protected TreeViewer layersExplorerTree;
+ private DisposeListener disposeListener = new DisposeListener() {
+
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ System.err.println(this.getClass().getName() + " is disposed !!!" + e.widget);
+
+ }
+ };
+
+ protected ISelectionChangedListener selectionChangedListener = new ISelectionChangedListener() {
+
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ System.out.println(LayersExplorerView.this.getClass().getSimpleName()
+ + ".selectionChanged("+event.getSelection()+")" );
+
+
+ }
+ };
+
+ /**
+ * Current LayersStacke life cycle notifier. This value is changed
+ * when the container change. The value can be null.
+ */
+ protected LayersStackAndApplicationLifeCycleEventNotifier currentLayersStackNotifier = null;
+
+ /**
+ * Listen on the current container LayersStack life cycle event.
+ * The observed {@link LayersStackApplication} is changed when the container change.
+ */
+ protected ILayersStackApplicationEventListener layersStackLifeCycleEventListener = new ILayersStackApplicationEventListener() {
+
+ @Override
+ public void layerStackRemoved(Notification msg) {
+ refreshLayersExplorerTree();
+ }
+
+ @Override
+ public void layerStackAdded(Notification msg) {
+ refreshLayersExplorerTree();
+ }
+ };
+
+
+ /**
+ * Constructor.
+ *
+ */
+ public LayersExplorerView() {
+ super();
+ }
+
+ /**
+ * Get the property contributor ID.
+ * This is used by the tabbed properties to identify
+ * wich parts are accepted by a property contributor.
+ * We use Papyrus id.
+ */
+ public String getContributorId() {
+ // return Activator.PLUGIN_ID;
+ return "TreeOutlinePage"; //$NON-NLS-1$
+ }
+
+ /**
+ * Init the view. Called before {@link #createPartControl(Composite)}
+ *
+ * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite)
+ *
+ * @param site
+ * @throws PartInitException
+ */
+ @Override
+ public void init(IViewSite site) throws PartInitException {
+ // TODO Auto-generated method stub
+ super.init(site);
+ }
+
+ protected void init() {
+
+ // Add listeners on container and page changed events
+ sashEventsProvider = new SashWindowsEventsProvider(getSite().getPage());
+
+ sashEventsProvider.addPageChangedListener(pageChangedListener);
+ sashEventsProvider.addSashWindowsContainerChangedListener(containerChangedListener);
+
+ // Add listener on LayersStack added or removed event
+
+ // Set initials values
+
+ activeSashWindowContainerChanged(sashEventsProvider.activeSashWindowsContainer());
+// setActivePage(sashEventsProvider.activeSashWindowsPage());
+ }
+
+ public void dispose() {
+
+ super.dispose();
+
+ if( sashEventsProvider != null ) {
+ sashEventsProvider.removePageChangedListener(pageChangedListener);
+ sashEventsProvider.removeSashWindowsContainerChangedListener(containerChangedListener);
+ sashEventsProvider = null;
+ }
+
+ }
+ /**
+ *
+ * @see org.eclipse.ui.part.WorkbenchPart#getAdapter(java.lang.Class)
+ *
+ * @param adapter
+ * @return
+ */
+ @Override
+ public Object getAdapter(Class adapter) {
+ if (adapter == IPropertySheetPage.class)
+ return new TabbedPropertySheetPage(this);
+ return super.getAdapter(adapter);
+ }
+
+
+ /**
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ *
+ * @param parent
+ *
+ */
+ protected void createlayersExplorerTreeControl(Composite parent) {
+ // Create tree
+
+ ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+// adapterFactory.addAdapterFactory(new LayersItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new NotationItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+// AdapterFactory adapterFactory = new LayersItemProviderAdapterFactory();
+ layersExplorerTree.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+// layersExplorerTree.setContentProvider(new MyContentProvider());
+
+ layersExplorerTree.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+// layersExplorerTree.setLabelProvider(new LabelProvider());
+
+
+ }
+
+/**
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ *
+ * @param parent
+ *
+ * @wbp.parser.entryPoint
+ */
+ @Override
+public void createPartControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+
+// AdapterFactory adapterFactory = new LayersItemProviderAdapterFactory();
+ composite.setLayout(new GridLayout(1, false));
+
+ Composite headerComposite = new Composite(composite, SWT.BORDER);
+ headerComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+ headerComposite.setLayout(new GridLayout(2, false));
+
+ Label diagramNameLabel = new Label(headerComposite, SWT.NONE);
+ diagramNameLabel.setText("Diagram");
+
+ nameLabel = new Label(headerComposite, SWT.BORDER);
+ GridData gd_nameLabel = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+ gd_nameLabel.horizontalIndent = 2;
+ nameLabel.setLayoutData(gd_nameLabel);
+ nameLabel.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+ nameLabel.setText("Hello World");
+ nameLabel.setText("container");
+
+ Label containerNameLabel = new Label(headerComposite, SWT.NONE);
+ containerNameLabel.setText("Container");
+
+ containerLabel = new Label(headerComposite, SWT.BORDER);
+ GridData gd_containerLabel = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+ gd_containerLabel.horizontalIndent = 2;
+ containerLabel.setLayoutData(gd_containerLabel);
+ containerLabel.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+
+ // Create tree
+// layersExplorerTree = LayersTreeViewerFactory.createLayersTreeViewer(composite, SWT.MULTI);
+ layersExplorerTree = new TreeViewer(composite, SWT.MULTI /*| SWT.H_SCROLL | SWT.V_SCROLL*/);
+ LayersTreeViewerFactory.initContentAndLabelProviders(layersExplorerTree);
+ LayersTreeViewerFactory.initContextMenuFor(getSite(), layersExplorerTree);
+ Tree tree = layersExplorerTree.getTree();
+ tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+// createlayersExplorerTreeControl(composite);
+
+
+ // misc
+ parent.addDisposeListener(disposeListener );
+ layersExplorerTree.getTree().addDisposeListener(disposeListener );
+
+ init();
+
+ // Setup properties sheet binding
+ getViewSite().setSelectionProvider(layersExplorerTree);
+
+ layersExplorerTree.addSelectionChangedListener(selectionChangedListener);
+
+ // context menu
+// createContextMenuFor(layersExplorerTree);
+}
+
+ /**
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ *
+ */
+ @Override
+ public void setFocus() {
+ layersExplorerTree.getTree().setFocus();
+
+ }
+
+ /** activeSashWindowContainerChanged
+ * The active {@link ISashWindowsContainer} has changed, reset the internal states accordingly.
+ *
+ * @param newContainer
+ */
+ protected void activeSashWindowContainerChanged(ISashWindowsContainer newContainer) {
+ System.err.println("activeSashWindowContainerChanged(" + (newContainer!=null?newContainer:"noContainer") + ")");
+
+ // check if there is a container
+ if(newContainer==null) {
+ // No container
+ currentServicesRegistry = null;
+ currentLayersModel = null;
+ switchLayersStackLifeCycleEventListener(null);
+ setLabels(null);
+ setEmptyTreeInput();
+ return;
+ }
+
+ // There is a container
+ // Reset states
+ currentServicesRegistry = null;
+ currentLayersModel = null;
+// currentLayersStackNotifier = null;
+
+ try {
+ // Compute ServiceRegistry
+ currentServicesRegistry = getServiceRegistry();
+ // Compute LayersModel
+ currentLayersModel = getLayersModel();
+ } catch (Exception e) {
+ // should not happen, because editor with container always
+ // have a registry and models.
+ // FIXME log error
+ e.printStackTrace();
+ // Container, but problems
+ currentServicesRegistry = null;
+ currentLayersModel = null;
+ switchLayersStackLifeCycleEventListener(null);
+ setLabels(null);
+ setEmptyTreeInput();
+ return;
+
+ }
+
+ switchLayersStackLifeCycleEventListener(currentLayersModel.getLayersStackLifeCycleEventNotifier());
+ setLabels(newContainer);
+ refreshLayersExplorerTree();
+
+ }
+
+ /**
+ * Get the LayersModel associated to the ServiceRegistry.
+ * The {@link #currentServicesRegistry} property should have been set
+ * (by {@link #activeSashWindowContainerChanged(ISashWindowsContainer)};
+ *
+ *
+ * @return The layersModel
+ * @throws NotFoundException If no LayersModel can be found
+ * @throws ServiceException If {@link ModelSet} can't be found
+ */
+ private LayersModel getLayersModel() throws ServiceException, NotFoundException {
+
+ ModelSet modelSet = ServiceUtils.getInstance().getModelSet(currentServicesRegistry);
+ LayersModel model = (LayersModel)modelSet.getModelChecked(LayersModel.MODEL_ID);
+
+ return model;
+ }
+
+ /**
+ * Get the {@link ServiceRegistry} associated to the current IEditorPart found
+ * in the {@link #sashEventsProvider}.
+ *
+ * @return The associated ServicesRegistry.
+ *
+ * @throws NotFoundException if the ServicesRegistry can't be found.
+ */
+ private ServicesRegistry getServiceRegistry() throws NotFoundException {
+ IEditorPart editor = sashEventsProvider.activeSashWindowsContainerOwner();
+ if(editor == null) {
+ throw new NotFoundException();
+ }
+
+ ServicesRegistry registry = (ServicesRegistry)editor.getAdapter(ServicesRegistry.class);
+ if(registry == null) {
+ throw new NotFoundException();
+ }
+
+ return registry;
+ }
+
+ /**
+ * The {@link ISashWindowsContainer} has changed.
+ * Stop listening from the old LayerStackLifeCycleEventProvider, and start listening on the
+ * new LayerStackLifeCycleEventProvider
+ */
+ private void switchLayersStackLifeCycleEventListener(LayersStackAndApplicationLifeCycleEventNotifier newNotifier) {
+
+ if( currentLayersStackNotifier != null) {
+ currentLayersStackNotifier.removeLayersModelEventListener(layersStackLifeCycleEventListener);
+ }
+
+ currentLayersStackNotifier = newNotifier;
+ if( currentLayersStackNotifier != null) {
+ currentLayersStackNotifier.addLayersModelEventListener(layersStackLifeCycleEventListener);
+ }
+ }
+
+ /**
+ * @param newPage
+ */
+ protected void setActivePage(IPage newPage) {
+ setActivePageLabel(newPage);
+ refreshLayersExplorerTree();
+
+// if( newPage != null) {
+// System.err.println("setActivePage(" + newPage.getPageTitle() + ")");
+// return;
+// }
+
+ }
+
+ /**
+ * Set the tree input with nothing
+ */
+ private void setEmptyTreeInput() {
+ setTreeInput(null);
+
+ }
+
+ /**
+ * Reset the tree input after a container changed event.
+ */
+ protected void resetTreeInput() {
+
+ IEditorPart editor = sashEventsProvider.activeSashWindowsContainerOwner();
+ if(editor == null) {
+ setEmptyTreeInput();
+ return;
+ }
+
+ ServicesRegistry registry = (ServicesRegistry)editor.getAdapter(ServicesRegistry.class);
+ if(registry == null) {
+ System.err.println("New editor has no ServiceRegistry");
+ setEmptyTreeInput();
+ return;
+ }
+ ModelSet modelSet;
+ try {
+ modelSet = ServiceUtils.getInstance().getModelSet(registry);
+ LayersModel model = (LayersModel)modelSet.getModelChecked(LayersModel.MODEL_ID);
+
+ Diagram currentDiagram = getCurrentDiagram();
+ if(currentDiagram==null) {
+ setEmptyTreeInput();
+ return;
+ }
+
+ LayersStackApplication application = model.lookupLayerStackApplication();
+ if(application==null) {
+ setEmptyTreeInput();
+ return;
+ }
+
+ setTreeInput(application.lookupLayersStackFor(currentDiagram));
+ layersExplorerTree.setSelection(new StructuredSelection(model.getLayerStackApplication().getLayersStacks().get(0)), true);
+
+ return;
+ } catch (ServiceException e) {
+ e.printStackTrace();
+ setEmptyTreeInput();
+ } catch (NotFoundException e) {
+ e.printStackTrace();
+ setEmptyTreeInput();
+ } catch (org.eclipse.papyrus.layers.stackmodel.NotFoundException e) {
+ setEmptyTreeInput();
+ }
+ }
+
+ /**
+ * Refresh the complete tree
+ */
+ public void refreshTreeInput() {
+ layersExplorerTree.refresh();
+ }
+
+ /**
+ * compute the currently selected diagram from the sashEventsProvider state.
+ *
+ * @return the current diagram or null if there is no diagram.
+ */
+ private Diagram getCurrentDiagram() {
+ IPage page = sashEventsProvider.activeSashWindowsPage();
+ if( ! (page instanceof IEditorPage)
+ || ! ( ((IEditorPage)page).getIEditorPart() instanceof DiagramDocumentEditor) ) {
+ return null;
+ }
+
+ DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor)((IEditorPage)page).getIEditorPart();
+
+ Diagram diagram = diagramEditor.getDiagram();
+ if(diagram == null) {
+ return null;
+ }
+
+ return diagram;
+ }
+
+ /**
+ * Change the input of the tree
+ * @param layerStackApplication
+ */
+ private void setTreeInput(Object input) {
+ layersExplorerTree.setInput(input);
+ }
+
+ /**
+ * @param newContainer
+ */
+ protected void setLabels(ISashWindowsContainer newContainer) {
+ if( newContainer != null) {
+ containerLabel.setText(newContainer.toString());
+ setActivePageLabel(newContainer.getActiveSashWindowsPage());
+ }
+ else {
+ containerLabel.setText("nocontainer");
+ setActivePageLabel(null);
+ }
+ }
+
+
+ /**
+ * @param newContainer
+ */
+ protected void setSashWindowContainerLabel(ISashWindowsContainer newContainer) {
+ if( newContainer != null) {
+ containerLabel.setText(newContainer.toString());
+ }
+ else {
+ containerLabel.setText("nocontainer");
+ }
+ }
+
+ /**
+ * @param newPage
+ */
+ protected void setActivePageLabel(IPage newPage) {
+ if( newPage != null ) {
+ nameLabel.setText(newPage.getPageTitle());
+ }
+ else {
+ nameLabel.setText("nopage");
+ }
+ }
+
+ /**
+ * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected void createContextMenuFor(StructuredViewer viewer) {
+ MenuManager contextMenu = new MenuManager("#PopUp");
+ contextMenu.add(new Separator("additions"));
+ contextMenu.setRemoveAllWhenShown(true);
+// contextMenu.addMenuListener(this);
+ Menu menu= contextMenu.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ // getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+ String menuId = "org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu";
+// getSite().registerContextMenu(menuId, contextMenu, new UnwrappingSelectionProvider(viewer));
+ getSite().registerContextMenu(menuId, contextMenu, viewer);
+
+// int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+// Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+// viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+// viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+ }
+
+ /**
+ * Refresh the internal {@link #layersExplorerTree} according to the current LayersStack found.
+ * Lookup for the current LayerStack, and set the internal {@link #layersExplorerTree} accordingly.
+ * If a LayerStack is found, show it in the tree.
+ * Otherwise,show an empty tree
+ * TODO rename to resetLayersExplorerTreeInput()
+ */
+ public void refreshLayersExplorerTree() {
+
+ LayersStack currentLayersStack = lookupCurrentLayersStack();
+ if(currentLayersStack != null) {
+ setTreeInput(currentLayersStack);
+ layersExplorerTree.setSelection(new StructuredSelection(currentLayersStack), true);
+ }
+ else
+ setEmptyTreeInput();
+ }
+
+ /**
+ * Lookup if there is a current {@link LayersStack} attached to the
+ * diagram associated to the current page.
+ * Return the {@link LayersStack} if there is one, or null if there is none.
+ * The {@link #currentServicesRegistry} and {@link #currentLayersModel} should be already set.
+ * @return the current {@link LayersStack} or null.
+ */
+ private LayersStack lookupCurrentLayersStack() {
+
+ if( currentLayersModel==null || currentServicesRegistry==null) {
+
+ // Bad state
+ // FIXME Log error ?
+ System.err.println("Error - "+ getClass().getSimpleName() + " - currentLayersModel and currentServicesRegistry should not be null.");
+ return null;
+ }
+
+ try {
+ Diagram currentDiagram = getCurrentDiagram();
+ if(currentDiagram==null) {
+ return null;
+ }
+
+ LayersStackApplication application = currentLayersModel.lookupLayerStackApplication();
+ if(application==null) {
+ return null;
+ }
+
+ return application.lookupLayersStackFor(currentDiagram);
+ } catch (org.eclipse.papyrus.layers.stackmodel.NotFoundException e) {
+ }
+ // Not found
+ return null;
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerViewUtils.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerViewUtils.java
new file mode 100644
index 00000000000..e5c28fc8624
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerViewUtils.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.view;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * Utilities to open, close or check the LayersExplorerView.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersExplorerViewUtils {
+
+ /**
+ * Id of the View.
+ */
+ static final public String LayersExplorerViewId = "org.eclipse.papyrus.layers.ui.view.layersexplorer";
+
+ /**
+ *
+ * @param event
+ */
+ static public void openView(ExecutionEvent event) {
+ try {
+ HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().showView(LayersExplorerViewId);
+ } catch (PartInitException e) {
+ // Do nothing;
+ }
+ }
+
+ /**
+ *
+ * @param event
+ */
+ static public void openView(IEvaluationContext context) {
+ try {
+ getActiveWorkbenchWindow(context).getActivePage().showView(LayersExplorerViewId);
+ } catch (PartInitException e) {
+ // Do nothing;
+ }
+ }
+
+ /**
+ *
+ * @param event
+ * @throws NotFoundException
+ */
+ static public LayersExplorerView findView(ExecutionEvent event) throws NotFoundException {
+ IViewPart part = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().findView(LayersExplorerViewId);
+
+ if(part instanceof LayersExplorerView ) {
+ return (LayersExplorerView)part;
+ }
+ else {
+ throw new NotFoundException("Can't find LayersExplorerView.");
+ }
+ }
+
+ /**
+ *
+ * @param event
+ * @throws NotFoundException
+ */
+ static public LayersExplorerView findView(IEvaluationContext context) throws NotFoundException {
+ IViewPart part = getActiveWorkbenchWindow(context).getActivePage().findView(LayersExplorerViewId);
+
+ if(part instanceof LayersExplorerView ) {
+ return (LayersExplorerView)part;
+ }
+ else {
+ throw new NotFoundException("Can't find LayersExplorerView.");
+ }
+ }
+ /**
+ *
+ * @param event
+ * @return
+ */
+ static public boolean isViewOpened(ExecutionEvent event) {
+ try {
+ return findView(event)!=null;
+ } catch (NotFoundException e) {
+ // Do nothing;
+ return false;
+ }
+ }
+
+ /**
+ *
+ * @param event
+ * @return
+ */
+ static public boolean isViewOpened(IEvaluationContext context) {
+ try {
+ return findView(context)!=null;
+ } catch (NotFoundException e) {
+ // Do nothing;
+ return false;
+ }
+ }
+
+ public static IWorkbenchWindow getActiveWorkbenchWindow(IEvaluationContext context) {
+ Object o = HandlerUtil.getVariable(context, ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
+ if (o instanceof IWorkbenchWindow) {
+ return (IWorkbenchWindow) o;
+ }
+ return null;
+ }
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersTreeViewerFactory.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersTreeViewerFactory.java
new file mode 100644
index 00000000000..93b080f748c
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersTreeViewerFactory.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.view;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.layers.stackmodel.layers.provider.custom.CustomLayersItemProviderAdapterFactory;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IWorkbenchPartSite;
+
+
+/**
+ * A utility class to create LayersTreeViewer suitable to render layers as a tree.
+ *
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersTreeViewerFactory {
+
+ /**
+ * ID used to register the context menu.
+ */
+ static final String CONTEXT_MENU_ID = "org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu";
+
+ /**
+ * Create a TreeViewer suitable to render Layers as a Tree.
+ * The content and label providers are set.
+ * The context menu is not set.
+ *
+ *
+ * @return
+ */
+ static public TreeViewer createLayersTreeViewer(Composite parent, int style) {
+
+ TreeViewer layersExplorerTree = new TreeViewer(parent, style);
+
+ initContentAndLabelProviders(layersExplorerTree);
+
+ return layersExplorerTree;
+ }
+
+ /**
+ * Set appropriate Content and Label providers for the LayersTreeViewer.
+ * @param layersExplorerTree
+ */
+ protected static void initContentAndLabelProviders(TreeViewer layersExplorerTree) {
+ // Set content and label providers
+ AdapterFactory adapterFactory = createLayersTreeViewerItemProvidersFactory();
+ layersExplorerTree.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ layersExplorerTree.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+ }
+
+ /**
+ * Create an AdapterFactory suitable for the LayersTreeViewer.
+ * @return
+ */
+ static public AdapterFactory createLayersTreeViewerItemProvidersFactory() {
+ ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+// adapterFactory.addAdapterFactory(new LayersItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new CustomLayersItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new NotationItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+ return adapterFactory;
+ }
+
+ /**
+ * This creates a context menu for the viewer and adds a listener as well as registering the menu for extension.
+ *
+ */
+ static public void initContextMenuFor(IWorkbenchPartSite site, StructuredViewer viewer) {
+ MenuManager contextMenu = new MenuManager("#PopUp");
+ contextMenu.add(new Separator("additions"));
+ contextMenu.setRemoveAllWhenShown(true);
+ // contextMenu.addMenuListener(this);
+ Menu menu= contextMenu.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ // getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+ // getSite().registerContextMenu(CONTEXT_MENU_ID, contextMenu, new UnwrappingSelectionProvider(viewer));
+ site.registerContextMenu(CONTEXT_MENU_ID, contextMenu, viewer);
+
+ // int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+ // Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+ // viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+ // viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+ }
+
+
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/package-info.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/package-info.java
new file mode 100644
index 00000000000..1fbd4c7f3a3
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/package-info.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ * The Layer Viewer is responsible of showing the Layer Stack Properties.
+ * It synchronize itself to the current selection.
+ *
+ * @author cedric dumoulin
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.view;
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/wb/swt/SWTResourceManager.java b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/wb/swt/SWTResourceManager.java
new file mode 100644
index 00000000000..29c77c931ac
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/wb/swt/SWTResourceManager.java
@@ -0,0 +1,447 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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:
+ * Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.wb.swt;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Utility class for managing OS resources associated with SWT controls such as colors, fonts, images, etc.
+ * <p>
+ * !!! IMPORTANT !!! Application code must explicitly invoke the <code>dispose()</code> method to release the
+ * operating system resources managed by cached objects when those objects and OS resources are no longer
+ * needed (e.g. on application shutdown)
+ * <p>
+ * This class may be freely distributed as part of any application or plugin.
+ * <p>
+ * @author scheglov_ke
+ * @author Dan Rubel
+ */
+public class SWTResourceManager {
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Color
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ private static Map<RGB, Color> m_colorMap = new HashMap<RGB, Color>();
+ /**
+ * Returns the system {@link Color} matching the specific ID.
+ *
+ * @param systemColorID
+ * the ID value for the color
+ * @return the system {@link Color} matching the specific ID
+ */
+ public static Color getColor(int systemColorID) {
+ Display display = Display.getCurrent();
+ return display.getSystemColor(systemColorID);
+ }
+ /**
+ * Returns a {@link Color} given its red, green and blue component values.
+ *
+ * @param r
+ * the red component of the color
+ * @param g
+ * the green component of the color
+ * @param b
+ * the blue component of the color
+ * @return the {@link Color} matching the given red, green and blue component values
+ */
+ public static Color getColor(int r, int g, int b) {
+ return getColor(new RGB(r, g, b));
+ }
+ /**
+ * Returns a {@link Color} given its RGB value.
+ *
+ * @param rgb
+ * the {@link RGB} value of the color
+ * @return the {@link Color} matching the RGB value
+ */
+ public static Color getColor(RGB rgb) {
+ Color color = m_colorMap.get(rgb);
+ if (color == null) {
+ Display display = Display.getCurrent();
+ color = new Color(display, rgb);
+ m_colorMap.put(rgb, color);
+ }
+ return color;
+ }
+ /**
+ * Dispose of all the cached {@link Color}'s.
+ */
+ public static void disposeColors() {
+ for (Color color : m_colorMap.values()) {
+ color.dispose();
+ }
+ m_colorMap.clear();
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Image
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Maps image paths to images.
+ */
+ private static Map<String, Image> m_imageMap = new HashMap<String, Image>();
+ /**
+ * Returns an {@link Image} encoded by the specified {@link InputStream}.
+ *
+ * @param stream
+ * the {@link InputStream} encoding the image data
+ * @return the {@link Image} encoded by the specified input stream
+ */
+ protected static Image getImage(InputStream stream) throws IOException {
+ try {
+ Display display = Display.getCurrent();
+ ImageData data = new ImageData(stream);
+ if (data.transparentPixel > 0) {
+ return new Image(display, data, data.getTransparencyMask());
+ }
+ return new Image(display, data);
+ } finally {
+ stream.close();
+ }
+ }
+ /**
+ * Returns an {@link Image} stored in the file at the specified path.
+ *
+ * @param path
+ * the path to the image file
+ * @return the {@link Image} stored in the file at the specified path
+ */
+ public static Image getImage(String path) {
+ Image image = m_imageMap.get(path);
+ if (image == null) {
+ try {
+ image = getImage(new FileInputStream(path));
+ m_imageMap.put(path, image);
+ } catch (Exception e) {
+ image = getMissingImage();
+ m_imageMap.put(path, image);
+ }
+ }
+ return image;
+ }
+ /**
+ * Returns an {@link Image} stored in the file at the specified path relative to the specified class.
+ *
+ * @param clazz
+ * the {@link Class} relative to which to find the image
+ * @param path
+ * the path to the image file, if starts with <code>'/'</code>
+ * @return the {@link Image} stored in the file at the specified path
+ */
+ public static Image getImage(Class<?> clazz, String path) {
+ String key = clazz.getName() + '|' + path;
+ Image image = m_imageMap.get(key);
+ if (image == null) {
+ try {
+ image = getImage(clazz.getResourceAsStream(path));
+ m_imageMap.put(key, image);
+ } catch (Exception e) {
+ image = getMissingImage();
+ m_imageMap.put(key, image);
+ }
+ }
+ return image;
+ }
+ private static final int MISSING_IMAGE_SIZE = 10;
+ /**
+ * @return the small {@link Image} that can be used as placeholder for missing image.
+ */
+ private static Image getMissingImage() {
+ Image image = new Image(Display.getCurrent(), MISSING_IMAGE_SIZE, MISSING_IMAGE_SIZE);
+ //
+ GC gc = new GC(image);
+ gc.setBackground(getColor(SWT.COLOR_RED));
+ gc.fillRectangle(0, 0, MISSING_IMAGE_SIZE, MISSING_IMAGE_SIZE);
+ gc.dispose();
+ //
+ return image;
+ }
+ /**
+ * Style constant for placing decorator image in top left corner of base image.
+ */
+ public static final int TOP_LEFT = 1;
+ /**
+ * Style constant for placing decorator image in top right corner of base image.
+ */
+ public static final int TOP_RIGHT = 2;
+ /**
+ * Style constant for placing decorator image in bottom left corner of base image.
+ */
+ public static final int BOTTOM_LEFT = 3;
+ /**
+ * Style constant for placing decorator image in bottom right corner of base image.
+ */
+ public static final int BOTTOM_RIGHT = 4;
+ /**
+ * Internal value.
+ */
+ protected static final int LAST_CORNER_KEY = 5;
+ /**
+ * Maps images to decorated images.
+ */
+ @SuppressWarnings("unchecked")
+ private static Map<Image, Map<Image, Image>>[] m_decoratedImageMap = new Map[LAST_CORNER_KEY];
+ /**
+ * Returns an {@link Image} composed of a base image decorated by another image.
+ *
+ * @param baseImage
+ * the base {@link Image} that should be decorated
+ * @param decorator
+ * the {@link Image} to decorate the base image
+ * @return {@link Image} The resulting decorated image
+ */
+ public static Image decorateImage(Image baseImage, Image decorator) {
+ return decorateImage(baseImage, decorator, BOTTOM_RIGHT);
+ }
+ /**
+ * Returns an {@link Image} composed of a base image decorated by another image.
+ *
+ * @param baseImage
+ * the base {@link Image} that should be decorated
+ * @param decorator
+ * the {@link Image} to decorate the base image
+ * @param corner
+ * the corner to place decorator image
+ * @return the resulting decorated {@link Image}
+ */
+ public static Image decorateImage(final Image baseImage, final Image decorator, final int corner) {
+ if (corner <= 0 || corner >= LAST_CORNER_KEY) {
+ throw new IllegalArgumentException("Wrong decorate corner");
+ }
+ Map<Image, Map<Image, Image>> cornerDecoratedImageMap = m_decoratedImageMap[corner];
+ if (cornerDecoratedImageMap == null) {
+ cornerDecoratedImageMap = new HashMap<Image, Map<Image, Image>>();
+ m_decoratedImageMap[corner] = cornerDecoratedImageMap;
+ }
+ Map<Image, Image> decoratedMap = cornerDecoratedImageMap.get(baseImage);
+ if (decoratedMap == null) {
+ decoratedMap = new HashMap<Image, Image>();
+ cornerDecoratedImageMap.put(baseImage, decoratedMap);
+ }
+ //
+ Image result = decoratedMap.get(decorator);
+ if (result == null) {
+ Rectangle bib = baseImage.getBounds();
+ Rectangle dib = decorator.getBounds();
+ //
+ result = new Image(Display.getCurrent(), bib.width, bib.height);
+ //
+ GC gc = new GC(result);
+ gc.drawImage(baseImage, 0, 0);
+ if (corner == TOP_LEFT) {
+ gc.drawImage(decorator, 0, 0);
+ } else if (corner == TOP_RIGHT) {
+ gc.drawImage(decorator, bib.width - dib.width, 0);
+ } else if (corner == BOTTOM_LEFT) {
+ gc.drawImage(decorator, 0, bib.height - dib.height);
+ } else if (corner == BOTTOM_RIGHT) {
+ gc.drawImage(decorator, bib.width - dib.width, bib.height - dib.height);
+ }
+ gc.dispose();
+ //
+ decoratedMap.put(decorator, result);
+ }
+ return result;
+ }
+ /**
+ * Dispose all of the cached {@link Image}'s.
+ */
+ public static void disposeImages() {
+ // dispose loaded images
+ {
+ for (Image image : m_imageMap.values()) {
+ image.dispose();
+ }
+ m_imageMap.clear();
+ }
+ // dispose decorated images
+ for (int i = 0; i < m_decoratedImageMap.length; i++) {
+ Map<Image, Map<Image, Image>> cornerDecoratedImageMap = m_decoratedImageMap[i];
+ if (cornerDecoratedImageMap != null) {
+ for (Map<Image, Image> decoratedMap : cornerDecoratedImageMap.values()) {
+ for (Image image : decoratedMap.values()) {
+ image.dispose();
+ }
+ decoratedMap.clear();
+ }
+ cornerDecoratedImageMap.clear();
+ }
+ }
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Font
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Maps font names to fonts.
+ */
+ private static Map<String, Font> m_fontMap = new HashMap<String, Font>();
+ /**
+ * Maps fonts to their bold versions.
+ */
+ private static Map<Font, Font> m_fontToBoldFontMap = new HashMap<Font, Font>();
+ /**
+ * Returns a {@link Font} based on its name, height and style.
+ *
+ * @param name
+ * the name of the font
+ * @param height
+ * the height of the font
+ * @param style
+ * the style of the font
+ * @return {@link Font} The font matching the name, height and style
+ */
+ public static Font getFont(String name, int height, int style) {
+ return getFont(name, height, style, false, false);
+ }
+ /**
+ * Returns a {@link Font} based on its name, height and style. Windows-specific strikeout and underline
+ * flags are also supported.
+ *
+ * @param name
+ * the name of the font
+ * @param size
+ * the size of the font
+ * @param style
+ * the style of the font
+ * @param strikeout
+ * the strikeout flag (warning: Windows only)
+ * @param underline
+ * the underline flag (warning: Windows only)
+ * @return {@link Font} The font matching the name, height, style, strikeout and underline
+ */
+ public static Font getFont(String name, int size, int style, boolean strikeout, boolean underline) {
+ String fontName = name + '|' + size + '|' + style + '|' + strikeout + '|' + underline;
+ Font font = m_fontMap.get(fontName);
+ if (font == null) {
+ FontData fontData = new FontData(name, size, style);
+ if (strikeout || underline) {
+ try {
+ Class<?> logFontClass = Class.forName("org.eclipse.swt.internal.win32.LOGFONT"); //$NON-NLS-1$
+ Object logFont = FontData.class.getField("data").get(fontData); //$NON-NLS-1$
+ if (logFont != null && logFontClass != null) {
+ if (strikeout) {
+ logFontClass.getField("lfStrikeOut").set(logFont, Byte.valueOf((byte) 1)); //$NON-NLS-1$
+ }
+ if (underline) {
+ logFontClass.getField("lfUnderline").set(logFont, Byte.valueOf((byte) 1)); //$NON-NLS-1$
+ }
+ }
+ } catch (Throwable e) {
+ System.err.println("Unable to set underline or strikeout" + " (probably on a non-Windows platform). " + e); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ font = new Font(Display.getCurrent(), fontData);
+ m_fontMap.put(fontName, font);
+ }
+ return font;
+ }
+ /**
+ * Returns a bold version of the given {@link Font}.
+ *
+ * @param baseFont
+ * the {@link Font} for which a bold version is desired
+ * @return the bold version of the given {@link Font}
+ */
+ public static Font getBoldFont(Font baseFont) {
+ Font font = m_fontToBoldFontMap.get(baseFont);
+ if (font == null) {
+ FontData fontDatas[] = baseFont.getFontData();
+ FontData data = fontDatas[0];
+ font = new Font(Display.getCurrent(), data.getName(), data.getHeight(), SWT.BOLD);
+ m_fontToBoldFontMap.put(baseFont, font);
+ }
+ return font;
+ }
+ /**
+ * Dispose all of the cached {@link Font}'s.
+ */
+ public static void disposeFonts() {
+ // clear fonts
+ for (Font font : m_fontMap.values()) {
+ font.dispose();
+ }
+ m_fontMap.clear();
+ // clear bold fonts
+ for (Font font : m_fontToBoldFontMap.values()) {
+ font.dispose();
+ }
+ m_fontToBoldFontMap.clear();
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Cursor
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Maps IDs to cursors.
+ */
+ private static Map<Integer, Cursor> m_idToCursorMap = new HashMap<Integer, Cursor>();
+ /**
+ * Returns the system cursor matching the specific ID.
+ *
+ * @param id
+ * int The ID value for the cursor
+ * @return Cursor The system cursor matching the specific ID
+ */
+ public static Cursor getCursor(int id) {
+ Integer key = Integer.valueOf(id);
+ Cursor cursor = m_idToCursorMap.get(key);
+ if (cursor == null) {
+ cursor = new Cursor(Display.getDefault(), id);
+ m_idToCursorMap.put(key, cursor);
+ }
+ return cursor;
+ }
+ /**
+ * Dispose all of the cached cursors.
+ */
+ public static void disposeCursors() {
+ for (Cursor cursor : m_idToCursorMap.values()) {
+ cursor.dispose();
+ }
+ m_idToCursorMap.clear();
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // General
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Dispose of cached objects and their underlying OS resources. This should only be called when the cached
+ * objects are no longer needed (e.g. on application shutdown).
+ */
+ public static void dispose() {
+ disposeColors();
+ disposeImages();
+ disposeFonts();
+ disposeCursors();
+ }
+}
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.updatesite/.project b/extraplugins/layers/org.eclipse.papyrus.layers.updatesite/.project
new file mode 100644
index 00000000000..a9ffbbf81fb
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.updatesite/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.layers.updatesite</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.UpdateSiteBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.UpdateSiteNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.updatesite/site.xml b/extraplugins/layers/org.eclipse.papyrus.layers.updatesite/site.xml
new file mode 100644
index 00000000000..3294a808d1d
--- /dev/null
+++ b/extraplugins/layers/org.eclipse.papyrus.layers.updatesite/site.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+ <feature url="features/org.eclipse.papyrus.layers.feature_0.10.1.201311151041.jar" id="org.eclipse.papyrus.layers.feature" version="0.10.1.201311151041"/>
+</site>

Back to the top